home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / QuickTimeComponents.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  131.6 KB  |  3,478 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QuickTimeComponents.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QuickTimeComponents;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QUICKTIMECOMPONENTS__}
  27. {$SETC __QUICKTIMECOMPONENTS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QuickTimeComponentsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __COMPONENTS__}
  35. {$I Components.p}
  36. {$ENDC}
  37. {    Types.p                                                        }
  38. {        ConditionalMacros.p                                        }
  39. {    MixedMode.p                                                    }
  40.  
  41. {$IFC UNDEFINED __IMAGECOMPRESSION__}
  42. {$I ImageCompression.p}
  43. {$ENDC}
  44. {    Quickdraw.p                                                    }
  45. {        QuickdrawText.p                                            }
  46. {    QDOffscreen.p                                                }
  47. {        Errors.p                                                }
  48. {    Windows.p                                                    }
  49. {        Memory.p                                                }
  50. {        Events.p                                                }
  51. {            OSUtils.p                                            }
  52. {        Controls.p                                                }
  53. {            Menus.p                                                }
  54. {    StandardFile.p                                                }
  55. {        Dialogs.p                                                }
  56. {            TextEdit.p                                            }
  57. {        Files.p                                                    }
  58.  
  59. {$IFC UNDEFINED __MOVIES__}
  60. {$I Movies.p}
  61. {$ENDC}
  62. {    Aliases.p                                                    }
  63. {        AppleTalk.p                                                }
  64.  
  65. {$IFC UNDEFINED __VIDEO__}
  66. {$I Video.p}
  67. {$ENDC}
  68.  
  69. {$PUSH}
  70. {$ALIGN MAC68K}
  71. {$LibExport+}
  72.  
  73. CONST
  74.     clockComponentType            = 'clok';
  75.     systemTickClock                = 'tick';                        { subtype: 60ths since boot        }
  76.     systemSecondClock            = 'seco';                        { subtype: seconds since 1904        }
  77.     systemMillisecondClock        = 'mill';                        { subtype: 1000ths since boot        }
  78.     systemMicrosecondClock        = 'micr';
  79.  
  80.     kClockRateIsLinear            = 1;
  81.     kClockImplementsCallBacks    = 2;
  82.  
  83. {* These are Clock procedures *}
  84.  
  85. FUNCTION ClockGetTime(aClock: ComponentInstance; VAR out: TimeRecord): ComponentResult;
  86.     {$IFC NOT GENERATINGCFM}
  87.     INLINE $2F3C, $4, $1, $7000, $A82A;
  88.     {$ENDC}
  89. FUNCTION ClockNewCallBack(aClock: ComponentInstance; tb: TimeBase; callBackType: INTEGER): QTCallBack;
  90.     {$IFC NOT GENERATINGCFM}
  91.     INLINE $2F3C, $6, $2, $7000, $A82A;
  92.     {$ENDC}
  93. FUNCTION ClockDisposeCallBack(aClock: ComponentInstance; cb: QTCallBack): ComponentResult;
  94.     {$IFC NOT GENERATINGCFM}
  95.     INLINE $2F3C, $4, $3, $7000, $A82A;
  96.     {$ENDC}
  97. FUNCTION ClockCallMeWhen(aClock: ComponentInstance; cb: QTCallBack; param1: LONGINT; param2: LONGINT; param3: LONGINT): ComponentResult;
  98.     {$IFC NOT GENERATINGCFM}
  99.     INLINE $2F3C, $10, $4, $7000, $A82A;
  100.     {$ENDC}
  101. FUNCTION ClockCancelCallBack(aClock: ComponentInstance; cb: QTCallBack): ComponentResult;
  102.     {$IFC NOT GENERATINGCFM}
  103.     INLINE $2F3C, $4, $5, $7000, $A82A;
  104.     {$ENDC}
  105. FUNCTION ClockRateChanged(aClock: ComponentInstance; cb: QTCallBack): ComponentResult;
  106.     {$IFC NOT GENERATINGCFM}
  107.     INLINE $2F3C, $4, $6, $7000, $A82A;
  108.     {$ENDC}
  109. FUNCTION ClockTimeChanged(aClock: ComponentInstance; cb: QTCallBack): ComponentResult;
  110.     {$IFC NOT GENERATINGCFM}
  111.     INLINE $2F3C, $4, $7, $7000, $A82A;
  112.     {$ENDC}
  113. FUNCTION ClockSetTimeBase(aClock: ComponentInstance; tb: TimeBase): ComponentResult;
  114.     {$IFC NOT GENERATINGCFM}
  115.     INLINE $2F3C, $4, $8, $7000, $A82A;
  116.     {$ENDC}
  117. FUNCTION ClockStartStopChanged(aClock: ComponentInstance; cb: QTCallBack; startChanged: BOOLEAN; stopChanged: BOOLEAN): ComponentResult;
  118.     {$IFC NOT GENERATINGCFM}
  119.     INLINE $2F3C, $8, $9, $7000, $A82A;
  120.     {$ENDC}
  121. FUNCTION ClockGetRate(aClock: ComponentInstance; VAR rate: Fixed): ComponentResult;
  122.     {$IFC NOT GENERATINGCFM}
  123.     INLINE $2F3C, $4, $A, $7000, $A82A;
  124.     {$ENDC}
  125.  
  126. CONST
  127.     kClockGetTimeSelect            = $1;
  128.     kClockNewCallBackSelect        = $2;
  129.     kClockDisposeCallBackSelect    = $3;
  130.     kClockCallMeWhenSelect        = $4;
  131.     kClockCancelCallBackSelect    = $5;
  132.     kClockRateChangedSelect        = $6;
  133.     kClockTimeChangedSelect        = $7;
  134.     kClockSetTimeBaseSelect        = $8;
  135.     kClockStartStopChangedSelect = $9;
  136.     kClockGetRateSelect            = $A;
  137.  
  138. {
  139.     General Sequence Grab stuff
  140. }
  141.     
  142. TYPE
  143.     SeqGrabComponent = ComponentInstance;
  144.  
  145.     SGChannel = ComponentInstance;
  146.  
  147.  
  148. CONST
  149.     SeqGrabComponentType        = 'barg';
  150.     SeqGrabChannelType            = 'sgch';
  151.     SeqGrabPanelType            = 'sgpn';
  152.     SeqGrabCompressionPanelType    = 'comp';
  153.     SeqGrabSourcePanelType        = 'sour';
  154.  
  155.     seqGrabToDisk                = 1;
  156.     seqGrabToMemory                = 2;
  157.     seqGrabDontUseTempMemory    = 4;
  158.     seqGrabAppendToFile            = 8;
  159.     seqGrabDontAddMovieResource    = 16;
  160.     seqGrabDontMakeMovie        = 32;
  161.     seqGrabPreExtendFile        = 64;
  162.     seqGrabDataProcIsInterruptSafe = 128;
  163.     seqGrabDataProcDoesOverlappingReads = 256;
  164.  
  165.     
  166. TYPE
  167.     SeqGrabDataOutputEnum = LONGINT;
  168.  
  169.  
  170. CONST
  171.     seqGrabRecord                = 1;
  172.     seqGrabPreview                = 2;
  173.     seqGrabPlayDuringRecord        = 4;
  174.  
  175.     
  176. TYPE
  177.     SeqGrabUsageEnum = LONGINT;
  178.  
  179.  
  180. CONST
  181.     seqGrabHasBounds            = 1;
  182.     seqGrabHasVolume            = 2;
  183.     seqGrabHasDiscreteSamples    = 4;
  184.  
  185.     
  186. TYPE
  187.     SeqGrabChannelInfoEnum = LONGINT;
  188.  
  189.     SeqGrabFrameInfo = RECORD
  190.         frameOffset:            LONGINT;
  191.         frameTime:                LONGINT;
  192.         frameSize:                LONGINT;
  193.         frameChannel:            SGChannel;
  194.         frameRefCon:            LONGINT;
  195.     END;
  196.     SeqGrabFrameInfoPtr = ^SeqGrabFrameInfo;
  197.  
  198.  
  199. CONST
  200.     grabPictOffScreen            = 1;
  201.     grabPictIgnoreClip            = 2;
  202.     grabPictCurrentImage        = 4;
  203.  
  204.     sgFlagControlledGrab        = 0+(1 * (2**(0)));
  205.  
  206. TYPE
  207.     SGDataProcPtr = ProcPtr;  { FUNCTION SGData(c: SGChannel; p: Ptr; len: LONGINT; VAR offset: LONGINT; chRefCon: LONGINT; time: TimeValue; writeType: INTEGER; refCon: LONGINT): OSErr; }
  208.     SGDataUPP = UniversalProcPtr;
  209.  
  210.     SGDeviceName = RECORD
  211.         name:                    Str63;
  212.         icon:                    Handle;
  213.         flags:                    LONGINT;
  214.         refCon:                    LONGINT;
  215.         reserved:                LONGINT;                                { zero}
  216.     END;
  217.  
  218. CONST
  219.     sgDeviceNameFlagDeviceUnavailable = 0+(1 * (2**(0)));
  220.  
  221.  
  222. TYPE
  223.     SGDeviceListRecord = RECORD
  224.         count:                    INTEGER;
  225.         selectedIndex:            INTEGER;
  226.         reserved:                LONGINT;                                { zero}
  227.         entry:                    ARRAY [0..0] OF SGDeviceName;
  228.     END;
  229.     SGDeviceListPtr = ^SGDeviceListRecord;
  230.     SGDeviceList = ^SGDeviceListPtr;
  231.  
  232.  
  233. CONST
  234.     sgDeviceListWithIcons        = 0+(1 * (2**(0)));
  235.     sgDeviceListDontCheckAvailability = 0+(1 * (2**(1)));
  236.  
  237.     seqGrabWriteAppend            = 0;
  238.     seqGrabWriteReserve            = 1;
  239.     seqGrabWriteFill            = 2;
  240.  
  241.     seqGrabUnpause                = 0;
  242.     seqGrabPause                = 1;
  243.     seqGrabPauseForMenu            = 3;
  244.  
  245.     channelFlagDontOpenResFile    = 2;
  246.     channelFlagHasDependency    = 4;
  247.  
  248. TYPE
  249.     SGModalFilterProcPtr = ProcPtr;  { FUNCTION SGModalFilter(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; refCon: LONGINT): BOOLEAN; }
  250.     SGModalFilterUPP = UniversalProcPtr;
  251.  
  252.  
  253. CONST
  254.     sgPanelFlagForPanel            = 1;
  255.  
  256.  
  257. TYPE
  258.     SGOutputRecord = RECORD
  259.         data:                    ARRAY [0..0] OF LONGINT;
  260.     END;
  261.     SGOutput = ^SGOutputRecord;
  262.  
  263.  
  264. CONST
  265.     channelPlayNormal            = 0;
  266.     channelPlayFast                = 1;
  267.     channelPlayHighQuality        = 2;
  268.     channelPlayAllData            = 4;
  269.  
  270.  
  271. FUNCTION SGInitialize(s: SeqGrabComponent): ComponentResult;
  272.     {$IFC NOT GENERATINGCFM}
  273.     INLINE $2F3C, 0, $1, $7000, $A82A;
  274.     {$ENDC}
  275. FUNCTION SGSetDataOutput(s: SeqGrabComponent; {CONST}VAR movieFile: FSSpec; whereFlags: LONGINT): ComponentResult;
  276.     {$IFC NOT GENERATINGCFM}
  277.     INLINE $2F3C, $8, $2, $7000, $A82A;
  278.     {$ENDC}
  279. FUNCTION SGGetDataOutput(s: SeqGrabComponent; VAR movieFile: FSSpec; VAR whereFlags: LONGINT): ComponentResult;
  280.     {$IFC NOT GENERATINGCFM}
  281.     INLINE $2F3C, $8, $3, $7000, $A82A;
  282.     {$ENDC}
  283. FUNCTION SGSetGWorld(s: SeqGrabComponent; gp: CGrafPtr; gd: GDHandle): ComponentResult;
  284.     {$IFC NOT GENERATINGCFM}
  285.     INLINE $2F3C, $8, $4, $7000, $A82A;
  286.     {$ENDC}
  287. FUNCTION SGGetGWorld(s: SeqGrabComponent; VAR gp: CGrafPtr; VAR gd: GDHandle): ComponentResult;
  288.     {$IFC NOT GENERATINGCFM}
  289.     INLINE $2F3C, $8, $5, $7000, $A82A;
  290.     {$ENDC}
  291. FUNCTION SGNewChannel(s: SeqGrabComponent; channelType: OSType; VAR ref: SGChannel): ComponentResult;
  292.     {$IFC NOT GENERATINGCFM}
  293.     INLINE $2F3C, $8, $6, $7000, $A82A;
  294.     {$ENDC}
  295. FUNCTION SGDisposeChannel(s: SeqGrabComponent; c: SGChannel): ComponentResult;
  296.     {$IFC NOT GENERATINGCFM}
  297.     INLINE $2F3C, $4, $7, $7000, $A82A;
  298.     {$ENDC}
  299. FUNCTION SGStartPreview(s: SeqGrabComponent): ComponentResult;
  300.     {$IFC NOT GENERATINGCFM}
  301.     INLINE $2F3C, 0, $10, $7000, $A82A;
  302.     {$ENDC}
  303. FUNCTION SGStartRecord(s: SeqGrabComponent): ComponentResult;
  304.     {$IFC NOT GENERATINGCFM}
  305.     INLINE $2F3C, 0, $11, $7000, $A82A;
  306.     {$ENDC}
  307. FUNCTION SGIdle(s: SeqGrabComponent): ComponentResult;
  308.     {$IFC NOT GENERATINGCFM}
  309.     INLINE $2F3C, 0, $12, $7000, $A82A;
  310.     {$ENDC}
  311. FUNCTION SGStop(s: SeqGrabComponent): ComponentResult;
  312.     {$IFC NOT GENERATINGCFM}
  313.     INLINE $2F3C, 0, $13, $7000, $A82A;
  314.     {$ENDC}
  315. FUNCTION SGPause(s: SeqGrabComponent; pause: ByteParameter): ComponentResult;
  316.     {$IFC NOT GENERATINGCFM}
  317.     INLINE $2F3C, $2, $14, $7000, $A82A;
  318.     {$ENDC}
  319. FUNCTION SGPrepare(s: SeqGrabComponent; prepareForPreview: BOOLEAN; prepareForRecord: BOOLEAN): ComponentResult;
  320.     {$IFC NOT GENERATINGCFM}
  321.     INLINE $2F3C, $4, $15, $7000, $A82A;
  322.     {$ENDC}
  323. FUNCTION SGRelease(s: SeqGrabComponent): ComponentResult;
  324.     {$IFC NOT GENERATINGCFM}
  325.     INLINE $2F3C, 0, $16, $7000, $A82A;
  326.     {$ENDC}
  327. FUNCTION SGGetMovie(s: SeqGrabComponent): Movie;
  328.     {$IFC NOT GENERATINGCFM}
  329.     INLINE $2F3C, 0, $17, $7000, $A82A;
  330.     {$ENDC}
  331. FUNCTION SGSetMaximumRecordTime(s: SeqGrabComponent; ticks: LONGINT): ComponentResult;
  332.     {$IFC NOT GENERATINGCFM}
  333.     INLINE $2F3C, $4, $18, $7000, $A82A;
  334.     {$ENDC}
  335. FUNCTION SGGetMaximumRecordTime(s: SeqGrabComponent; VAR ticks: LONGINT): ComponentResult;
  336.     {$IFC NOT GENERATINGCFM}
  337.     INLINE $2F3C, $4, $19, $7000, $A82A;
  338.     {$ENDC}
  339. FUNCTION SGGetStorageSpaceRemaining(s: SeqGrabComponent; VAR bytes: LONGINT): ComponentResult;
  340.     {$IFC NOT GENERATINGCFM}
  341.     INLINE $2F3C, $4, $1A, $7000, $A82A;
  342.     {$ENDC}
  343. FUNCTION SGGetTimeRemaining(s: SeqGrabComponent; VAR ticksLeft: LONGINT): ComponentResult;
  344.     {$IFC NOT GENERATINGCFM}
  345.     INLINE $2F3C, $4, $1B, $7000, $A82A;
  346.     {$ENDC}
  347. FUNCTION SGGrabPict(s: SeqGrabComponent; VAR p: PicHandle; {CONST}VAR bounds: Rect; offscreenDepth: INTEGER; grabPictFlags: LONGINT): ComponentResult;
  348.     {$IFC NOT GENERATINGCFM}
  349.     INLINE $2F3C, $E, $1C, $7000, $A82A;
  350.     {$ENDC}
  351. FUNCTION SGGetLastMovieResID(s: SeqGrabComponent; VAR resID: INTEGER): ComponentResult;
  352.     {$IFC NOT GENERATINGCFM}
  353.     INLINE $2F3C, $4, $1D, $7000, $A82A;
  354.     {$ENDC}
  355. FUNCTION SGSetFlags(s: SeqGrabComponent; sgFlags: LONGINT): ComponentResult;
  356.     {$IFC NOT GENERATINGCFM}
  357.     INLINE $2F3C, $4, $1E, $7000, $A82A;
  358.     {$ENDC}
  359. FUNCTION SGGetFlags(s: SeqGrabComponent; VAR sgFlags: LONGINT): ComponentResult;
  360.     {$IFC NOT GENERATINGCFM}
  361.     INLINE $2F3C, $4, $1F, $7000, $A82A;
  362.     {$ENDC}
  363. FUNCTION SGSetDataProc(s: SeqGrabComponent; proc: SGDataUPP; refCon: LONGINT): ComponentResult;
  364.     {$IFC NOT GENERATINGCFM}
  365.     INLINE $2F3C, $8, $20, $7000, $A82A;
  366.     {$ENDC}
  367. FUNCTION SGNewChannelFromComponent(s: SeqGrabComponent; VAR newChannel: SGChannel; sgChannelComponent: Component): ComponentResult;
  368.     {$IFC NOT GENERATINGCFM}
  369.     INLINE $2F3C, $8, $21, $7000, $A82A;
  370.     {$ENDC}
  371. FUNCTION SGDisposeDeviceList(s: SeqGrabComponent; list: SGDeviceList): ComponentResult;
  372.     {$IFC NOT GENERATINGCFM}
  373.     INLINE $2F3C, $4, $22, $7000, $A82A;
  374.     {$ENDC}
  375. FUNCTION SGAppendDeviceListToMenu(s: SeqGrabComponent; list: SGDeviceList; mh: MenuHandle): ComponentResult;
  376.     {$IFC NOT GENERATINGCFM}
  377.     INLINE $2F3C, $8, $23, $7000, $A82A;
  378.     {$ENDC}
  379. FUNCTION SGSetSettings(s: SeqGrabComponent; ud: UserData; flags: LONGINT): ComponentResult;
  380.     {$IFC NOT GENERATINGCFM}
  381.     INLINE $2F3C, $8, $24, $7000, $A82A;
  382.     {$ENDC}
  383. FUNCTION SGGetSettings(s: SeqGrabComponent; VAR ud: UserData; flags: LONGINT): ComponentResult;
  384.     {$IFC NOT GENERATINGCFM}
  385.     INLINE $2F3C, $8, $25, $7000, $A82A;
  386.     {$ENDC}
  387. FUNCTION SGGetIndChannel(s: SeqGrabComponent; index: INTEGER; VAR ref: SGChannel; VAR chanType: OSType): ComponentResult;
  388.     {$IFC NOT GENERATINGCFM}
  389.     INLINE $2F3C, $A, $26, $7000, $A82A;
  390.     {$ENDC}
  391. FUNCTION SGUpdate(s: SeqGrabComponent; updateRgn: RgnHandle): ComponentResult;
  392.     {$IFC NOT GENERATINGCFM}
  393.     INLINE $2F3C, $4, $27, $7000, $A82A;
  394.     {$ENDC}
  395. FUNCTION SGGetPause(s: SeqGrabComponent; VAR paused: Byte): ComponentResult;
  396.     {$IFC NOT GENERATINGCFM}
  397.     INLINE $2F3C, $4, $28, $7000, $A82A;
  398.     {$ENDC}
  399. FUNCTION SGSettingsDialog(s: SeqGrabComponent; c: SGChannel; numPanels: INTEGER; VAR panelList: Component; flags: LONGINT; proc: SGModalFilterUPP; procRefNum: LONGINT): ComponentResult;
  400.     {$IFC NOT GENERATINGCFM}
  401.     INLINE $2F3C, $16, $29, $7000, $A82A;
  402.     {$ENDC}
  403. FUNCTION SGGetAlignmentProc(s: SeqGrabComponent; alignmentProc: ICMAlignmentProcRecordPtr): ComponentResult;
  404.     {$IFC NOT GENERATINGCFM}
  405.     INLINE $2F3C, $4, $2A, $7000, $A82A;
  406.     {$ENDC}
  407. FUNCTION SGSetChannelSettings(s: SeqGrabComponent; c: SGChannel; ud: UserData; flags: LONGINT): ComponentResult;
  408.     {$IFC NOT GENERATINGCFM}
  409.     INLINE $2F3C, $C, $2B, $7000, $A82A;
  410.     {$ENDC}
  411. FUNCTION SGGetChannelSettings(s: SeqGrabComponent; c: SGChannel; VAR ud: UserData; flags: LONGINT): ComponentResult;
  412.     {$IFC NOT GENERATINGCFM}
  413.     INLINE $2F3C, $C, $2C, $7000, $A82A;
  414.     {$ENDC}
  415. FUNCTION SGGetMode(s: SeqGrabComponent; VAR previewMode: BOOLEAN; VAR recordMode: BOOLEAN): ComponentResult;
  416.     {$IFC NOT GENERATINGCFM}
  417.     INLINE $2F3C, $8, $2D, $7000, $A82A;
  418.     {$ENDC}
  419. FUNCTION SGSetDataRef(s: SeqGrabComponent; dataRef: Handle; dataRefType: OSType; whereFlags: LONGINT): ComponentResult;
  420.     {$IFC NOT GENERATINGCFM}
  421.     INLINE $2F3C, $C, $2E, $7000, $A82A;
  422.     {$ENDC}
  423. FUNCTION SGGetDataRef(s: SeqGrabComponent; VAR dataRef: Handle; VAR dataRefType: OSType; VAR whereFlags: LONGINT): ComponentResult;
  424.     {$IFC NOT GENERATINGCFM}
  425.     INLINE $2F3C, $C, $2F, $7000, $A82A;
  426.     {$ENDC}
  427. FUNCTION SGNewOutput(s: SeqGrabComponent; dataRef: Handle; dataRefType: OSType; whereFlags: LONGINT; VAR output: SGOutput): ComponentResult;
  428.     {$IFC NOT GENERATINGCFM}
  429.     INLINE $2F3C, $10, $30, $7000, $A82A;
  430.     {$ENDC}
  431. FUNCTION SGDisposeOutput(s: SeqGrabComponent; output: SGOutput): ComponentResult;
  432.     {$IFC NOT GENERATINGCFM}
  433.     INLINE $2F3C, $4, $31, $7000, $A82A;
  434.     {$ENDC}
  435. FUNCTION SGSetOutputFlags(s: SeqGrabComponent; output: SGOutput; whereFlags: LONGINT): ComponentResult;
  436.     {$IFC NOT GENERATINGCFM}
  437.     INLINE $2F3C, $8, $32, $7000, $A82A;
  438.     {$ENDC}
  439. FUNCTION SGSetChannelOutput(s: SeqGrabComponent; c: SGChannel; output: SGOutput): ComponentResult;
  440.     {$IFC NOT GENERATINGCFM}
  441.     INLINE $2F3C, $8, $33, $7000, $A82A;
  442.     {$ENDC}
  443. FUNCTION SGGetDataOutputStorageSpaceRemaining(s: SeqGrabComponent; output: SGOutput; VAR space: LONGINT): ComponentResult;
  444.     {$IFC NOT GENERATINGCFM}
  445.     INLINE $2F3C, $8, $34, $7000, $A82A;
  446.     {$ENDC}
  447. {
  448.     calls from Channel to seqGrab
  449. }
  450. FUNCTION SGWriteMovieData(s: SeqGrabComponent; c: SGChannel; p: Ptr; len: LONGINT; VAR offset: LONGINT): ComponentResult;
  451.     {$IFC NOT GENERATINGCFM}
  452.     INLINE $2F3C, $10, $100, $7000, $A82A;
  453.     {$ENDC}
  454. FUNCTION SGAddFrameReference(s: SeqGrabComponent; frameInfo: SeqGrabFrameInfoPtr): ComponentResult;
  455.     {$IFC NOT GENERATINGCFM}
  456.     INLINE $2F3C, $4, $101, $7000, $A82A;
  457.     {$ENDC}
  458. FUNCTION SGGetNextFrameReference(s: SeqGrabComponent; frameInfo: SeqGrabFrameInfoPtr; VAR frameDuration: TimeValue; VAR frameNumber: LONGINT): ComponentResult;
  459.     {$IFC NOT GENERATINGCFM}
  460.     INLINE $2F3C, $C, $102, $7000, $A82A;
  461.     {$ENDC}
  462. FUNCTION SGGetTimeBase(s: SeqGrabComponent; VAR tb: TimeBase): ComponentResult;
  463.     {$IFC NOT GENERATINGCFM}
  464.     INLINE $2F3C, $4, $103, $7000, $A82A;
  465.     {$ENDC}
  466. FUNCTION SGSortDeviceList(s: SeqGrabComponent; list: SGDeviceList): ComponentResult;
  467.     {$IFC NOT GENERATINGCFM}
  468.     INLINE $2F3C, $4, $104, $7000, $A82A;
  469.     {$ENDC}
  470. FUNCTION SGAddMovieData(s: SeqGrabComponent; c: SGChannel; p: Ptr; len: LONGINT; VAR offset: LONGINT; chRefCon: LONGINT; time: TimeValue; writeType: INTEGER): ComponentResult;
  471.     {$IFC NOT GENERATINGCFM}
  472.     INLINE $2F3C, $1A, $105, $7000, $A82A;
  473.     {$ENDC}
  474. FUNCTION SGChangedSource(s: SeqGrabComponent; c: SGChannel): ComponentResult;
  475.     {$IFC NOT GENERATINGCFM}
  476.     INLINE $2F3C, $4, $106, $7000, $A82A;
  477.     {$ENDC}
  478. {** Sequence Grab CHANNEL Component Stuff **}
  479. FUNCTION SGSetChannelUsage(c: SGChannel; usage: LONGINT): ComponentResult;
  480.     {$IFC NOT GENERATINGCFM}
  481.     INLINE $2F3C, $4, $80, $7000, $A82A;
  482.     {$ENDC}
  483. FUNCTION SGGetChannelUsage(c: SGChannel; VAR usage: LONGINT): ComponentResult;
  484.     {$IFC NOT GENERATINGCFM}
  485.     INLINE $2F3C, $4, $81, $7000, $A82A;
  486.     {$ENDC}
  487. FUNCTION SGSetChannelBounds(c: SGChannel; {CONST}VAR bounds: Rect): ComponentResult;
  488.     {$IFC NOT GENERATINGCFM}
  489.     INLINE $2F3C, $4, $82, $7000, $A82A;
  490.     {$ENDC}
  491. FUNCTION SGGetChannelBounds(c: SGChannel; VAR bounds: Rect): ComponentResult;
  492.     {$IFC NOT GENERATINGCFM}
  493.     INLINE $2F3C, $4, $83, $7000, $A82A;
  494.     {$ENDC}
  495. FUNCTION SGSetChannelVolume(c: SGChannel; volume: INTEGER): ComponentResult;
  496.     {$IFC NOT GENERATINGCFM}
  497.     INLINE $2F3C, $2, $84, $7000, $A82A;
  498.     {$ENDC}
  499. FUNCTION SGGetChannelVolume(c: SGChannel; VAR volume: INTEGER): ComponentResult;
  500.     {$IFC NOT GENERATINGCFM}
  501.     INLINE $2F3C, $4, $85, $7000, $A82A;
  502.     {$ENDC}
  503. FUNCTION SGGetChannelInfo(c: SGChannel; VAR channelInfo: LONGINT): ComponentResult;
  504.     {$IFC NOT GENERATINGCFM}
  505.     INLINE $2F3C, $4, $86, $7000, $A82A;
  506.     {$ENDC}
  507. FUNCTION SGSetChannelPlayFlags(c: SGChannel; playFlags: LONGINT): ComponentResult;
  508.     {$IFC NOT GENERATINGCFM}
  509.     INLINE $2F3C, $4, $87, $7000, $A82A;
  510.     {$ENDC}
  511. FUNCTION SGGetChannelPlayFlags(c: SGChannel; VAR playFlags: LONGINT): ComponentResult;
  512.     {$IFC NOT GENERATINGCFM}
  513.     INLINE $2F3C, $4, $88, $7000, $A82A;
  514.     {$ENDC}
  515. FUNCTION SGSetChannelMaxFrames(c: SGChannel; frameCount: LONGINT): ComponentResult;
  516.     {$IFC NOT GENERATINGCFM}
  517.     INLINE $2F3C, $4, $89, $7000, $A82A;
  518.     {$ENDC}
  519. FUNCTION SGGetChannelMaxFrames(c: SGChannel; VAR frameCount: LONGINT): ComponentResult;
  520.     {$IFC NOT GENERATINGCFM}
  521.     INLINE $2F3C, $4, $8A, $7000, $A82A;
  522.     {$ENDC}
  523. FUNCTION SGSetChannelRefCon(c: SGChannel; refCon: LONGINT): ComponentResult;
  524.     {$IFC NOT GENERATINGCFM}
  525.     INLINE $2F3C, $4, $8B, $7000, $A82A;
  526.     {$ENDC}
  527. FUNCTION SGSetChannelClip(c: SGChannel; theClip: RgnHandle): ComponentResult;
  528.     {$IFC NOT GENERATINGCFM}
  529.     INLINE $2F3C, $4, $8C, $7000, $A82A;
  530.     {$ENDC}
  531. FUNCTION SGGetChannelClip(c: SGChannel; VAR theClip: RgnHandle): ComponentResult;
  532.     {$IFC NOT GENERATINGCFM}
  533.     INLINE $2F3C, $4, $8D, $7000, $A82A;
  534.     {$ENDC}
  535. FUNCTION SGGetChannelSampleDescription(c: SGChannel; sampleDesc: Handle): ComponentResult;
  536.     {$IFC NOT GENERATINGCFM}
  537.     INLINE $2F3C, $4, $8E, $7000, $A82A;
  538.     {$ENDC}
  539. FUNCTION SGGetChannelDeviceList(c: SGChannel; selectionFlags: LONGINT; VAR list: SGDeviceList): ComponentResult;
  540.     {$IFC NOT GENERATINGCFM}
  541.     INLINE $2F3C, $8, $8F, $7000, $A82A;
  542.     {$ENDC}
  543. FUNCTION SGSetChannelDevice(c: SGChannel; name: StringPtr): ComponentResult;
  544.     {$IFC NOT GENERATINGCFM}
  545.     INLINE $2F3C, $4, $90, $7000, $A82A;
  546.     {$ENDC}
  547. FUNCTION SGSetChannelMatrix(c: SGChannel; {CONST}VAR m: MatrixRecord): ComponentResult;
  548.     {$IFC NOT GENERATINGCFM}
  549.     INLINE $2F3C, $4, $91, $7000, $A82A;
  550.     {$ENDC}
  551. FUNCTION SGGetChannelMatrix(c: SGChannel; VAR m: MatrixRecord): ComponentResult;
  552.     {$IFC NOT GENERATINGCFM}
  553.     INLINE $2F3C, $4, $92, $7000, $A82A;
  554.     {$ENDC}
  555. FUNCTION SGGetChannelTimeScale(c: SGChannel; VAR scale: TimeScale): ComponentResult;
  556.     {$IFC NOT GENERATINGCFM}
  557.     INLINE $2F3C, $4, $93, $7000, $A82A;
  558.     {$ENDC}
  559. FUNCTION SGChannelPutPicture(c: SGChannel): ComponentResult;
  560.     {$IFC NOT GENERATINGCFM}
  561.     INLINE $2F3C, 0, $94, $7000, $A82A;
  562.     {$ENDC}
  563. FUNCTION SGChannelSetRequestedDataRate(c: SGChannel; bytesPerSecond: LONGINT): ComponentResult;
  564.     {$IFC NOT GENERATINGCFM}
  565.     INLINE $2F3C, $4, $95, $7000, $A82A;
  566.     {$ENDC}
  567. FUNCTION SGChannelGetRequestedDataRate(c: SGChannel; VAR bytesPerSecond: LONGINT): ComponentResult;
  568.     {$IFC NOT GENERATINGCFM}
  569.     INLINE $2F3C, $4, $96, $7000, $A82A;
  570.     {$ENDC}
  571. FUNCTION SGChannelSetDataSourceName(c: SGChannel; name: ConstStr255Param; scriptTag: ScriptCode): ComponentResult;
  572.     {$IFC NOT GENERATINGCFM}
  573.     INLINE $2F3C, $6, $97, $7000, $A82A;
  574.     {$ENDC}
  575. FUNCTION SGChannelGetDataSourceName(c: SGChannel; VAR name: Str255; VAR scriptTag: ScriptCode): ComponentResult;
  576.     {$IFC NOT GENERATINGCFM}
  577.     INLINE $2F3C, $8, $98, $7000, $A82A;
  578.     {$ENDC}
  579. {
  580.     calls from seqGrab to Channel
  581. }
  582. FUNCTION SGInitChannel(c: SGChannel; owner: SeqGrabComponent): ComponentResult;
  583.     {$IFC NOT GENERATINGCFM}
  584.     INLINE $2F3C, $4, $180, $7000, $A82A;
  585.     {$ENDC}
  586. FUNCTION SGWriteSamples(c: SGChannel; m: Movie; theFile: AliasHandle): ComponentResult;
  587.     {$IFC NOT GENERATINGCFM}
  588.     INLINE $2F3C, $8, $181, $7000, $A82A;
  589.     {$ENDC}
  590. FUNCTION SGGetDataRate(c: SGChannel; VAR bytesPerSecond: LONGINT): ComponentResult;
  591.     {$IFC NOT GENERATINGCFM}
  592.     INLINE $2F3C, $4, $182, $7000, $A82A;
  593.     {$ENDC}
  594. FUNCTION SGAlignChannelRect(c: SGChannel; VAR r: Rect): ComponentResult;
  595.     {$IFC NOT GENERATINGCFM}
  596.     INLINE $2F3C, $4, $183, $7000, $A82A;
  597.     {$ENDC}
  598. {
  599.     Dorky dialog panel calls
  600. }
  601. FUNCTION SGPanelGetDitl(s: SeqGrabComponent; VAR ditl: Handle): ComponentResult;
  602.     {$IFC NOT GENERATINGCFM}
  603.     INLINE $2F3C, $4, $200, $7000, $A82A;
  604.     {$ENDC}
  605. FUNCTION SGPanelGetTitle(s: SeqGrabComponent; VAR title: Str255): ComponentResult;
  606.     {$IFC NOT GENERATINGCFM}
  607.     INLINE $2F3C, $4, $201, $7000, $A82A;
  608.     {$ENDC}
  609. FUNCTION SGPanelCanRun(s: SeqGrabComponent; c: SGChannel): ComponentResult;
  610.     {$IFC NOT GENERATINGCFM}
  611.     INLINE $2F3C, $4, $202, $7000, $A82A;
  612.     {$ENDC}
  613. FUNCTION SGPanelInstall(s: SeqGrabComponent; c: SGChannel; d: DialogPtr; itemOffset: INTEGER): ComponentResult;
  614.     {$IFC NOT GENERATINGCFM}
  615.     INLINE $2F3C, $A, $203, $7000, $A82A;
  616.     {$ENDC}
  617. FUNCTION SGPanelEvent(s: SeqGrabComponent; c: SGChannel; d: DialogPtr; itemOffset: INTEGER; VAR theEvent: EventRecord; VAR itemHit: INTEGER; VAR handled: BOOLEAN): ComponentResult;
  618.     {$IFC NOT GENERATINGCFM}
  619.     INLINE $2F3C, $16, $204, $7000, $A82A;
  620.     {$ENDC}
  621. FUNCTION SGPanelItem(s: SeqGrabComponent; c: SGChannel; d: DialogPtr; itemOffset: INTEGER; itemNum: INTEGER): ComponentResult;
  622.     {$IFC NOT GENERATINGCFM}
  623.     INLINE $2F3C, $C, $205, $7000, $A82A;
  624.     {$ENDC}
  625. FUNCTION SGPanelRemove(s: SeqGrabComponent; c: SGChannel; d: DialogPtr; itemOffset: INTEGER): ComponentResult;
  626.     {$IFC NOT GENERATINGCFM}
  627.     INLINE $2F3C, $A, $206, $7000, $A82A;
  628.     {$ENDC}
  629. FUNCTION SGPanelSetGrabber(s: SeqGrabComponent; sg: SeqGrabComponent): ComponentResult;
  630.     {$IFC NOT GENERATINGCFM}
  631.     INLINE $2F3C, $4, $207, $7000, $A82A;
  632.     {$ENDC}
  633. FUNCTION SGPanelSetResFile(s: SeqGrabComponent; resRef: INTEGER): ComponentResult;
  634.     {$IFC NOT GENERATINGCFM}
  635.     INLINE $2F3C, $2, $208, $7000, $A82A;
  636.     {$ENDC}
  637. FUNCTION SGPanelGetSettings(s: SeqGrabComponent; c: SGChannel; VAR ud: UserData; flags: LONGINT): ComponentResult;
  638.     {$IFC NOT GENERATINGCFM}
  639.     INLINE $2F3C, $C, $209, $7000, $A82A;
  640.     {$ENDC}
  641. FUNCTION SGPanelSetSettings(s: SeqGrabComponent; c: SGChannel; ud: UserData; flags: LONGINT): ComponentResult;
  642.     {$IFC NOT GENERATINGCFM}
  643.     INLINE $2F3C, $C, $20A, $7000, $A82A;
  644.     {$ENDC}
  645. FUNCTION SGPanelValidateInput(s: SeqGrabComponent; VAR ok: BOOLEAN): ComponentResult;
  646.     {$IFC NOT GENERATINGCFM}
  647.     INLINE $2F3C, $4, $20B, $7000, $A82A;
  648.     {$ENDC}
  649. FUNCTION SGPanelSetEventFilter(s: SeqGrabComponent; proc: SGModalFilterUPP; refCon: LONGINT): ComponentResult;
  650.     {$IFC NOT GENERATINGCFM}
  651.     INLINE $2F3C, $8, $20C, $7000, $A82A;
  652.     {$ENDC}
  653. {** Sequence Grab VIDEO CHANNEL Component Stuff **}
  654. {
  655.     Video stuff
  656. }
  657.  
  658. TYPE
  659.     SGCompressInfo = RECORD
  660.         buffer:                    Ptr;
  661.         bufferSize:                LONGINT;
  662.         similarity:                SInt8;
  663.         reserved:                SInt8;
  664.     END;
  665.     SGGrabProcPtr = ProcPtr;  { FUNCTION SGGrab(c: SGChannel; bufferNum: INTEGER; refCon: LONGINT): ComponentResult; }
  666.     SGGrabCompleteProcPtr = ProcPtr;  { FUNCTION SGGrabComplete(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; refCon: LONGINT): ComponentResult; }
  667.     SGDisplayProcPtr = ProcPtr;  { FUNCTION SGDisplay(c: SGChannel; bufferNum: INTEGER; VAR mp: MatrixRecord; clipRgn: RgnHandle; refCon: LONGINT): ComponentResult; }
  668.     SGCompressProcPtr = ProcPtr;  { FUNCTION SGCompress(c: SGChannel; bufferNum: INTEGER; refCon: LONGINT): ComponentResult; }
  669.     SGCompressCompleteProcPtr = ProcPtr;  { FUNCTION SGCompressComplete(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; VAR ci: SGCompressInfo; refCon: LONGINT): ComponentResult; }
  670.     SGAddFrameProcPtr = ProcPtr;  { FUNCTION SGAddFrame(c: SGChannel; bufferNum: INTEGER; atTime: TimeValue; scale: TimeScale; (CONST)VAR ci: SGCompressInfo; refCon: LONGINT): ComponentResult; }
  671.     SGTransferFrameProcPtr = ProcPtr;  { FUNCTION SGTransferFrame(c: SGChannel; bufferNum: INTEGER; VAR mp: MatrixRecord; clipRgn: RgnHandle; refCon: LONGINT): ComponentResult; }
  672.     SGGrabCompressCompleteProcPtr = ProcPtr;  { FUNCTION SGGrabCompressComplete(c: SGChannel; VAR done: BOOLEAN; VAR ci: SGCompressInfo; VAR t: TimeRecord; refCon: LONGINT): ComponentResult; }
  673.     SGDisplayCompressProcPtr = ProcPtr;  { FUNCTION SGDisplayCompress(c: SGChannel; dataPtr: Ptr; desc: ImageDescriptionHandle; VAR mp: MatrixRecord; clipRgn: RgnHandle; refCon: LONGINT): ComponentResult; }
  674.     SGGrabUPP = UniversalProcPtr;
  675.     SGGrabCompleteUPP = UniversalProcPtr;
  676.     SGDisplayUPP = UniversalProcPtr;
  677.     SGCompressUPP = UniversalProcPtr;
  678.     SGCompressCompleteUPP = UniversalProcPtr;
  679.     SGAddFrameUPP = UniversalProcPtr;
  680.     SGTransferFrameUPP = UniversalProcPtr;
  681.     SGGrabCompressCompleteUPP = UniversalProcPtr;
  682.     SGDisplayCompressUPP = UniversalProcPtr;
  683.  
  684.     VideoBottles = RECORD
  685.         procCount:                INTEGER;
  686.         grabProc:                SGGrabUPP;
  687.         grabCompleteProc:        SGGrabCompleteUPP;
  688.         displayProc:            SGDisplayUPP;
  689.         compressProc:            SGCompressUPP;
  690.         compressCompleteProc:    SGCompressCompleteUPP;
  691.         addFrameProc:            SGAddFrameUPP;
  692.         transferFrameProc:        SGTransferFrameUPP;
  693.         grabCompressCompleteProc: SGGrabCompressCompleteUPP;
  694.         displayCompressProc:    SGDisplayCompressUPP;
  695.     END;
  696.  
  697. FUNCTION SGGetSrcVideoBounds(c: SGChannel; VAR r: Rect): ComponentResult;
  698.     {$IFC NOT GENERATINGCFM}
  699.     INLINE $2F3C, $4, $100, $7000, $A82A;
  700.     {$ENDC}
  701. FUNCTION SGSetVideoRect(c: SGChannel; {CONST}VAR r: Rect): ComponentResult;
  702.     {$IFC NOT GENERATINGCFM}
  703.     INLINE $2F3C, $4, $101, $7000, $A82A;
  704.     {$ENDC}
  705. FUNCTION SGGetVideoRect(c: SGChannel; VAR r: Rect): ComponentResult;
  706.     {$IFC NOT GENERATINGCFM}
  707.     INLINE $2F3C, $4, $102, $7000, $A82A;
  708.     {$ENDC}
  709. FUNCTION SGGetVideoCompressorType(c: SGChannel; VAR compressorType: OSType): ComponentResult;
  710.     {$IFC NOT GENERATINGCFM}
  711.     INLINE $2F3C, $4, $103, $7000, $A82A;
  712.     {$ENDC}
  713. FUNCTION SGSetVideoCompressorType(c: SGChannel; compressorType: OSType): ComponentResult;
  714.     {$IFC NOT GENERATINGCFM}
  715.     INLINE $2F3C, $4, $104, $7000, $A82A;
  716.     {$ENDC}
  717. FUNCTION SGSetVideoCompressor(c: SGChannel; depth: INTEGER; compressor: CompressorComponent; spatialQuality: CodecQ; temporalQuality: CodecQ; keyFrameRate: LONGINT): ComponentResult;
  718.     {$IFC NOT GENERATINGCFM}
  719.     INLINE $2F3C, $12, $105, $7000, $A82A;
  720.     {$ENDC}
  721. FUNCTION SGGetVideoCompressor(c: SGChannel; VAR depth: INTEGER; VAR compressor: CompressorComponent; VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ; VAR keyFrameRate: LONGINT): ComponentResult;
  722.     {$IFC NOT GENERATINGCFM}
  723.     INLINE $2F3C, $14, $106, $7000, $A82A;
  724.     {$ENDC}
  725. FUNCTION SGGetVideoDigitizerComponent(c: SGChannel): ComponentInstance;
  726.     {$IFC NOT GENERATINGCFM}
  727.     INLINE $2F3C, 0, $107, $7000, $A82A;
  728.     {$ENDC}
  729. FUNCTION SGSetVideoDigitizerComponent(c: SGChannel; vdig: ComponentInstance): ComponentResult;
  730.     {$IFC NOT GENERATINGCFM}
  731.     INLINE $2F3C, $4, $108, $7000, $A82A;
  732.     {$ENDC}
  733. FUNCTION SGVideoDigitizerChanged(c: SGChannel): ComponentResult;
  734.     {$IFC NOT GENERATINGCFM}
  735.     INLINE $2F3C, 0, $109, $7000, $A82A;
  736.     {$ENDC}
  737. FUNCTION SGSetVideoBottlenecks(c: SGChannel; VAR vb: VideoBottles): ComponentResult;
  738.     {$IFC NOT GENERATINGCFM}
  739.     INLINE $2F3C, $4, $10A, $7000, $A82A;
  740.     {$ENDC}
  741. FUNCTION SGGetVideoBottlenecks(c: SGChannel; VAR vb: VideoBottles): ComponentResult;
  742.     {$IFC NOT GENERATINGCFM}
  743.     INLINE $2F3C, $4, $10B, $7000, $A82A;
  744.     {$ENDC}
  745. FUNCTION SGGrabFrame(c: SGChannel; bufferNum: INTEGER): ComponentResult;
  746.     {$IFC NOT GENERATINGCFM}
  747.     INLINE $2F3C, $2, $10C, $7000, $A82A;
  748.     {$ENDC}
  749. FUNCTION SGGrabFrameComplete(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN): ComponentResult;
  750.     {$IFC NOT GENERATINGCFM}
  751.     INLINE $2F3C, $6, $10D, $7000, $A82A;
  752.     {$ENDC}
  753. FUNCTION SGDisplayFrame(c: SGChannel; bufferNum: INTEGER; {CONST}VAR mp: MatrixRecord; clipRgn: RgnHandle): ComponentResult;
  754.     {$IFC NOT GENERATINGCFM}
  755.     INLINE $2F3C, $A, $10E, $7000, $A82A;
  756.     {$ENDC}
  757. FUNCTION SGCompressFrame(c: SGChannel; bufferNum: INTEGER): ComponentResult;
  758.     {$IFC NOT GENERATINGCFM}
  759.     INLINE $2F3C, $2, $10F, $7000, $A82A;
  760.     {$ENDC}
  761. FUNCTION SGCompressFrameComplete(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; VAR ci: SGCompressInfo): ComponentResult;
  762.     {$IFC NOT GENERATINGCFM}
  763.     INLINE $2F3C, $A, $110, $7000, $A82A;
  764.     {$ENDC}
  765. FUNCTION SGAddFrame(c: SGChannel; bufferNum: INTEGER; atTime: TimeValue; scale: TimeScale; {CONST}VAR ci: SGCompressInfo): ComponentResult;
  766.     {$IFC NOT GENERATINGCFM}
  767.     INLINE $2F3C, $E, $111, $7000, $A82A;
  768.     {$ENDC}
  769. FUNCTION SGTransferFrameForCompress(c: SGChannel; bufferNum: INTEGER; {CONST}VAR mp: MatrixRecord; clipRgn: RgnHandle): ComponentResult;
  770.     {$IFC NOT GENERATINGCFM}
  771.     INLINE $2F3C, $A, $112, $7000, $A82A;
  772.     {$ENDC}
  773. FUNCTION SGSetCompressBuffer(c: SGChannel; depth: INTEGER; {CONST}VAR compressSize: Rect): ComponentResult;
  774.     {$IFC NOT GENERATINGCFM}
  775.     INLINE $2F3C, $6, $113, $7000, $A82A;
  776.     {$ENDC}
  777. FUNCTION SGGetCompressBuffer(c: SGChannel; VAR depth: INTEGER; VAR compressSize: Rect): ComponentResult;
  778.     {$IFC NOT GENERATINGCFM}
  779.     INLINE $2F3C, $8, $114, $7000, $A82A;
  780.     {$ENDC}
  781. FUNCTION SGGetBufferInfo(c: SGChannel; bufferNum: INTEGER; VAR bufferPM: PixMapHandle; VAR bufferRect: Rect; VAR compressBuffer: GWorldPtr; VAR compressBufferRect: Rect): ComponentResult;
  782.     {$IFC NOT GENERATINGCFM}
  783.     INLINE $2F3C, $12, $115, $7000, $A82A;
  784.     {$ENDC}
  785. FUNCTION SGSetUseScreenBuffer(c: SGChannel; useScreenBuffer: BOOLEAN): ComponentResult;
  786.     {$IFC NOT GENERATINGCFM}
  787.     INLINE $2F3C, $2, $116, $7000, $A82A;
  788.     {$ENDC}
  789. FUNCTION SGGetUseScreenBuffer(c: SGChannel; VAR useScreenBuffer: BOOLEAN): ComponentResult;
  790.     {$IFC NOT GENERATINGCFM}
  791.     INLINE $2F3C, $4, $117, $7000, $A82A;
  792.     {$ENDC}
  793. FUNCTION SGGrabCompressComplete(c: SGChannel; VAR done: BOOLEAN; VAR ci: SGCompressInfo; VAR tr: TimeRecord): ComponentResult;
  794.     {$IFC NOT GENERATINGCFM}
  795.     INLINE $2F3C, $C, $118, $7000, $A82A;
  796.     {$ENDC}
  797. FUNCTION SGDisplayCompress(c: SGChannel; dataPtr: Ptr; desc: ImageDescriptionHandle; VAR mp: MatrixRecord; clipRgn: RgnHandle): ComponentResult;
  798.     {$IFC NOT GENERATINGCFM}
  799.     INLINE $2F3C, $10, $119, $7000, $A82A;
  800.     {$ENDC}
  801. FUNCTION SGSetFrameRate(c: SGChannel; frameRate: Fixed): ComponentResult;
  802.     {$IFC NOT GENERATINGCFM}
  803.     INLINE $2F3C, $4, $11A, $7000, $A82A;
  804.     {$ENDC}
  805. FUNCTION SGGetFrameRate(c: SGChannel; VAR frameRate: Fixed): ComponentResult;
  806.     {$IFC NOT GENERATINGCFM}
  807.     INLINE $2F3C, $4, $11B, $7000, $A82A;
  808.     {$ENDC}
  809. {** Sequence Grab SOUND CHANNEL Component Stuff **}
  810. {
  811.     Sound stuff
  812. }
  813. FUNCTION SGSetSoundInputDriver(c: SGChannel; driverName: ConstStr255Param): ComponentResult;
  814.     {$IFC NOT GENERATINGCFM}
  815.     INLINE $2F3C, $4, $100, $7000, $A82A;
  816.     {$ENDC}
  817. FUNCTION SGGetSoundInputDriver(c: SGChannel): LONGINT;
  818.     {$IFC NOT GENERATINGCFM}
  819.     INLINE $2F3C, 0, $101, $7000, $A82A;
  820.     {$ENDC}
  821. FUNCTION SGSoundInputDriverChanged(c: SGChannel): ComponentResult;
  822.     {$IFC NOT GENERATINGCFM}
  823.     INLINE $2F3C, 0, $102, $7000, $A82A;
  824.     {$ENDC}
  825. FUNCTION SGSetSoundRecordChunkSize(c: SGChannel; seconds: LONGINT): ComponentResult;
  826.     {$IFC NOT GENERATINGCFM}
  827.     INLINE $2F3C, $4, $103, $7000, $A82A;
  828.     {$ENDC}
  829. FUNCTION SGGetSoundRecordChunkSize(c: SGChannel): LONGINT;
  830.     {$IFC NOT GENERATINGCFM}
  831.     INLINE $2F3C, 0, $104, $7000, $A82A;
  832.     {$ENDC}
  833. FUNCTION SGSetSoundInputRate(c: SGChannel; rate: Fixed): ComponentResult;
  834.     {$IFC NOT GENERATINGCFM}
  835.     INLINE $2F3C, $4, $105, $7000, $A82A;
  836.     {$ENDC}
  837. FUNCTION SGGetSoundInputRate(c: SGChannel): Fixed;
  838.     {$IFC NOT GENERATINGCFM}
  839.     INLINE $2F3C, 0, $106, $7000, $A82A;
  840.     {$ENDC}
  841. FUNCTION SGSetSoundInputParameters(c: SGChannel; sampleSize: INTEGER; numChannels: INTEGER; compressionType: OSType): ComponentResult;
  842.     {$IFC NOT GENERATINGCFM}
  843.     INLINE $2F3C, $8, $107, $7000, $A82A;
  844.     {$ENDC}
  845. FUNCTION SGGetSoundInputParameters(c: SGChannel; VAR sampleSize: INTEGER; VAR numChannels: INTEGER; VAR compressionType: OSType): ComponentResult;
  846.     {$IFC NOT GENERATINGCFM}
  847.     INLINE $2F3C, $C, $108, $7000, $A82A;
  848.     {$ENDC}
  849.  
  850. CONST
  851.     sgChannelAtom                = 'chan';
  852.     sgChannelSettingsAtom        = 'ctom';
  853.     sgChannelDescription        = 'cdsc';
  854.     sgChannelSettings            = 'cset';
  855.  
  856.     sgDeviceNameType            = 'name';
  857.     sgUsageType                    = 'use ';
  858.     sgPlayFlagsType                = 'plyf';
  859.     sgClipType                    = 'clip';
  860.     sgMatrixType                = 'mtrx';
  861.     sgVolumeType                = 'volu';
  862.  
  863.     sgPanelSettingsAtom            = 'ptom';
  864.     sgPanelDescription            = 'pdsc';
  865.     sgPanelSettings                = 'pset';
  866.  
  867.     sgcSoundCompressionType        = 'scmp';
  868.     sgcSoundSampleRateType        = 'srat';
  869.     sgcSoundChannelCountType    = 'schn';
  870.     sgcSoundSampleSizeType        = 'ssiz';
  871.     sgcSoundInputType            = 'sinp';
  872.     sgcSoundGainType            = 'gain';
  873.  
  874.     sgcVideoHueType                = 'hue ';
  875.     sgcVideoSaturationType        = 'satr';
  876.     sgcVideoContrastType        = 'trst';
  877.     sgcVideoSharpnessType        = 'shrp';
  878.     sgcVideoBrigtnessType        = 'brit';
  879.     sgcVideoBlackLevelType        = 'blkl';
  880.     sgcVideoWhiteLevelType        = 'whtl';
  881.     sgcVideoInputType            = 'vinp';
  882.     sgcVideoFormatType            = 'vstd';
  883.     sgcVideoFilterType            = 'vflt';
  884.     sgcVideoRectType            = 'vrct';
  885.     sgVideoDigitizerType        = 'vdig';
  886.  
  887.     kSGInitializeSelect            = $1;
  888.     kSGSetDataOutputSelect        = $2;
  889.     kSGGetDataOutputSelect        = $3;
  890.     kSGSetGWorldSelect            = $4;
  891.     kSGGetGWorldSelect            = $5;
  892.     kSGNewChannelSelect            = $6;
  893.     kSGDisposeChannelSelect        = $7;
  894.     kSGStartPreviewSelect        = $10;
  895.     kSGStartRecordSelect        = $11;
  896.     kSGIdleSelect                = $12;
  897.     kSGStopSelect                = $13;
  898.     kSGPauseSelect                = $14;
  899.     kSGPrepareSelect            = $15;
  900.     kSGReleaseSelect            = $16;
  901.     kSGGetMovieSelect            = $17;
  902.     kSGSetMaximumRecordTimeSelect = $18;
  903.     kSGGetMaximumRecordTimeSelect = $19;
  904.     kSGGetStorageSpaceRemainingSelect = $1A;
  905.     kSGGetTimeRemainingSelect    = $1B;
  906.     kSGGrabPictSelect            = $1C;
  907.     kSGGetLastMovieResIDSelect    = $1D;
  908.     kSGSetFlagsSelect            = $1E;
  909.     kSGGetFlagsSelect            = $1F;
  910.     kSGSetDataProcSelect        = $20;
  911.     kSGNewChannelFromComponentSelect = $21;
  912.     kSGDisposeDeviceListSelect    = $22;
  913.     kSGAppendDeviceListToMenuSelect = $23;
  914.     kSGSetSettingsSelect        = $24;
  915.     kSGGetSettingsSelect        = $25;
  916.     kSGGetIndChannelSelect        = $26;
  917.     kSGUpdateSelect                = $27;
  918.     kSGGetPauseSelect            = $28;
  919.     kSGSettingsDialogSelect        = $29;
  920.     kSGGetAlignmentProcSelect    = $2A;
  921.     kSGSetChannelSettingsSelect    = $2B;
  922.     kSGGetChannelSettingsSelect    = $2C;
  923.     kSGGetModeSelect            = $2D;
  924.     kSGSetDataRefSelect            = $2E;
  925.     kSGGetDataRefSelect            = $2F;
  926.     kSGNewOutputSelect            = $30;
  927.     kSGDisposeOutputSelect        = $31;
  928.     kSGSetOutputFlagsSelect        = $32;
  929.     kSGSetChannelOutputSelect    = $33;
  930.     kSGGetDataOutputStorageSpaceRemainingSelect = $34;
  931.     kSGWriteMovieDataSelect        = $100;
  932.     kSGAddFrameReferenceSelect    = $101;
  933.     kSGGetNextFrameReferenceSelect = $102;
  934.     kSGGetTimeBaseSelect        = $103;
  935.     kSGSortDeviceListSelect        = $104;
  936.     kSGAddMovieDataSelect        = $105;
  937.     kSGChangedSourceSelect        = $106;
  938.     kSGCSetChannelUsageSelect    = $80;
  939.     kSGCGetChannelUsageSelect    = $81;
  940.     kSGCSetChannelBoundsSelect    = $82;
  941.     kSGCGetChannelBoundsSelect    = $83;
  942.     kSGCSetChannelVolumeSelect    = $84;
  943.     kSGCGetChannelVolumeSelect    = $85;
  944.     kSGCGetChannelInfoSelect    = $86;
  945.     kSGCSetChannelPlayFlagsSelect = $87;
  946.     kSGCGetChannelPlayFlagsSelect = $88;
  947.     kSGCSetChannelMaxFramesSelect = $89;
  948.     kSGCGetChannelMaxFramesSelect = $8A;
  949.     kSGCSetChannelRefConSelect    = $8B;
  950.     kSGCSetChannelClipSelect    = $8C;
  951.     kSGCGetChannelClipSelect    = $8D;
  952.     kSGCGetChannelSampleDescriptionSelect = $8E;
  953.     kSGCGetChannelDeviceListSelect = $8F;
  954.     kSGCSetChannelDeviceSelect    = $90;
  955.     kSGCSetChannelMatrixSelect    = $91;
  956.     kSGCGetChannelMatrixSelect    = $92;
  957.     kSGCGetChannelTimeScaleSelect = $93;
  958.     kSGCChannelPutPictureSelect    = $94;
  959.     kSGCChannelSetRequestedDataRateSelect = $95;
  960.     kSGCChannelGetRequestedDataRateSelect = $96;
  961.     kSGCChannelSetDataSourceNameSelect = $97;
  962.     kSGCChannelGetDataSourceNameSelect = $98;
  963.     kSGCInitChannelSelect        = $180;
  964.     kSGCWriteSamplesSelect        = $181;
  965.     kSGCGetDataRateSelect        = $182;
  966.     kSGCAlignChannelRectSelect    = $183;
  967.     kSGCPanelGetDitlSelect        = $200;
  968.     kSGCPanelGetTitleSelect        = $201;
  969.     kSGCPanelCanRunSelect        = $202;
  970.     kSGCPanelInstallSelect        = $203;
  971.     kSGCPanelEventSelect        = $204;
  972.     kSGCPanelItemSelect            = $205;
  973.     kSGCPanelRemoveSelect        = $206;
  974.     kSGCPanelSetGrabberSelect    = $207;
  975.     kSGCPanelSetResFileSelect    = $208;
  976.     kSGCPanelGetSettingsSelect    = $209;
  977.     kSGCPanelSetSettingsSelect    = $20A;
  978.     kSGCPanelValidateInputSelect = $20B;
  979.     kSGCPanelSetEventFilterSelect = $20C;
  980.     kSGCGetSrcVideoBoundsSelect    = $100;
  981.     kSGCSetVideoRectSelect        = $101;
  982.     kSGCGetVideoRectSelect        = $102;
  983.     kSGCGetVideoCompressorTypeSelect = $103;
  984.     kSGCSetVideoCompressorTypeSelect = $104;
  985.     kSGCSetVideoCompressorSelect = $105;
  986.     kSGCGetVideoCompressorSelect = $106;
  987.     kSGCGetVideoDigitizerComponentSelect = $107;
  988.     kSGCSetVideoDigitizerComponentSelect = $108;
  989.     kSGCVideoDigitizerChangedSelect = $109;
  990.     kSGCSetVideoBottlenecksSelect = $10A;
  991.     kSGCGetVideoBottlenecksSelect = $10B;
  992.     kSGCGrabFrameSelect            = $10C;
  993.     kSGCGrabFrameCompleteSelect    = $10D;
  994.     kSGCDisplayFrameSelect        = $10E;
  995.     kSGCCompressFrameSelect        = $10F;
  996.     kSGCCompressFrameCompleteSelect = $110;
  997.     kSGCAddFrameSelect            = $111;
  998.     kSGCTransferFrameForCompressSelect = $112;
  999.     kSGCSetCompressBufferSelect    = $113;
  1000.     kSGCGetCompressBufferSelect    = $114;
  1001.     kSGCGetBufferInfoSelect        = $115;
  1002.     kSGCSetUseScreenBufferSelect = $116;
  1003.     kSGCGetUseScreenBufferSelect = $117;
  1004.     kSGCGrabCompressCompleteSelect = $118;
  1005.     kSGCDisplayCompressSelect    = $119;
  1006.     kSGCSetFrameRateSelect        = $11A;
  1007.     kSGCGetFrameRateSelect        = $11B;
  1008.     kSGCSetSoundInputDriverSelect = $100;
  1009.     kSGCGetSoundInputDriverSelect = $101;
  1010.     kSGCSoundInputDriverChangedSelect = $102;
  1011.     kSGCSetSoundRecordChunkSizeSelect = $103;
  1012.     kSGCGetSoundRecordChunkSizeSelect = $104;
  1013.     kSGCSetSoundInputRateSelect    = $105;
  1014.     kSGCGetSoundInputRateSelect    = $106;
  1015.     kSGCSetSoundInputParametersSelect = $107;
  1016.     kSGCGetSoundInputParametersSelect = $108;
  1017.  
  1018. { Standard type for video digitizers }
  1019.     videoDigitizerComponentType    = 'vdig';
  1020.     vdigInterfaceRev            = 2;
  1021.  
  1022. { Input Format Standards }
  1023.     ntscIn                        = 0;                            { current input format }
  1024.     currentIn                    = 0;                            { ntsc input format }
  1025.     palIn                        = 1;                            { pal input format }
  1026.     secamIn                        = 2;                            { secam input format }
  1027.     ntscReallyIn                = 3;                            { ntsc input format }
  1028.  
  1029. { Input Formats }
  1030.     compositeIn                    = 0;                            { input is composite format }
  1031.     sVideoIn                    = 1;                            { input is sVideo format }
  1032.     rgbComponentIn                = 2;                            { input is rgb component format }
  1033.     rgbComponentSyncIn            = 3;                            { input is rgb component format (sync on green?)}
  1034.     yuvComponentIn                = 4;                            { input is yuv component format }
  1035.     yuvComponentSyncIn            = 5;                            { input is yuv component format (sync on green?) }
  1036.  
  1037. { Video Digitizer PlayThru States }
  1038.     vdPlayThruOff                = 0;
  1039.     vdPlayThruOn                = 1;
  1040.  
  1041. { Input Color Space Modes }
  1042.     vdDigitizerBW                = 0;                            { black and white }
  1043.     vdDigitizerRGB                = 1;                            { rgb color }
  1044.  
  1045. { Phase Lock Loop Modes }
  1046.     vdBroadcastMode                = 0;                            { Broadcast / Laser Disk video mode }
  1047.     vdVTRMode                    = 1;                            { VCR / Magnetic media mode }
  1048.  
  1049. { Field Select Options }
  1050.     vdUseAnyField                = 0;                            { Digitizers choice on field use }
  1051.     vdUseOddField                = 1;                            { Use odd field for half size vert and smaller }
  1052.     vdUseEvenField                = 2;                            { Use even field for half size vert and smaller }
  1053.  
  1054. { vdig types }
  1055.     vdTypeBasic                    = 0;                            { basic, no clipping }
  1056.     vdTypeAlpha                    = 1;                            { supports clipping with alpha channel }
  1057.     vdTypeMask                    = 2;                            { supports clipping with mask plane }
  1058.     vdTypeKey                    = 3;                            { supports clipping with key color(s) }
  1059.  
  1060. { Digitizer Input Capability/Current Flags    }
  1061.     digiInDoesNTSC                = 1 * (2**(0));                    { digitizer supports NTSC input format }
  1062.     digiInDoesPAL                = 1 * (2**(1));                    { digitizer supports PAL input format }
  1063.     digiInDoesSECAM                = 1 * (2**(2));                    { digitizer supports SECAM input format }
  1064.     digiInDoesGenLock            = 1 * (2**(7));                    { digitizer does genlock }
  1065.     digiInDoesComposite            = 1 * (2**(8));                    { digitizer supports composite input type }
  1066.     digiInDoesSVideo            = 1 * (2**(9));                    { digitizer supports S-Video input type }
  1067.     digiInDoesComponent            = 1 * (2**(10));                { digitizer supports component = rgb, input type }
  1068.     digiInVTR_Broadcast            = 1 * (2**(11));                { digitizer can differentiate between the two }
  1069.     digiInDoesColor                = 1 * (2**(12));                { digitizer supports color }
  1070.     digiInDoesBW                = 1 * (2**(13));                { digitizer supports black & white }
  1071. { Digitizer Input Current Flags = these are valid only during active operating conditions,    }
  1072.     digiInSignalLock            = 1 * (2**(31));                { digitizer detects input signal is locked, this bit = horiz lock || vertical lock }
  1073.  
  1074. { Digitizer Output Capability/Current Flags }
  1075.     digiOutDoes1                = 1 * (2**(0));                    { digitizer supports 1 bit pixels }
  1076.     digiOutDoes2                = 1 * (2**(1));                    { digitizer supports 2 bit pixels }
  1077.     digiOutDoes4                = 1 * (2**(2));                    { digitizer supports 4 bit pixels }
  1078.     digiOutDoes8                = 1 * (2**(3));                    { digitizer supports 8 bit pixels }
  1079.     digiOutDoes16                = 1 * (2**(4));                    { digitizer supports 16 bit pixels }
  1080.     digiOutDoes32                = 1 * (2**(5));                    { digitizer supports 32 bit pixels }
  1081.     digiOutDoesDither            = 1 * (2**(6));                    { digitizer dithers in indexed modes }
  1082.     digiOutDoesStretch            = 1 * (2**(7));                    { digitizer can arbitrarily stretch }
  1083.     digiOutDoesShrink            = 1 * (2**(8));                    { digitizer can arbitrarily shrink }
  1084.     digiOutDoesMask                = 1 * (2**(9));                    { digitizer can mask to clipping regions }
  1085.     digiOutDoesDouble            = 1 * (2**(11));                { digitizer can stretch to exactly double size }
  1086.     digiOutDoesQuad                = 1 * (2**(12));                { digitizer can stretch exactly quadruple size }
  1087.     digiOutDoesQuarter            = 1 * (2**(13));                { digitizer can shrink to exactly quarter size }
  1088.     digiOutDoesSixteenth        = 1 * (2**(14));                { digitizer can shrink to exactly sixteenth size }
  1089.     digiOutDoesRotate            = 1 * (2**(15));                { digitizer supports rotate transformations }
  1090.     digiOutDoesHorizFlip        = 1 * (2**(16));                { digitizer supports horizontal flips Sx < 0 }
  1091.     digiOutDoesVertFlip            = 1 * (2**(17));                { digitizer supports vertical flips Sy < 0 }
  1092.     digiOutDoesSkew                = 1 * (2**(18));                { digitizer supports skew = shear,twist, }
  1093.     digiOutDoesBlend            = 1 * (2**(19));
  1094.     digiOutDoesWarp                = 1 * (2**(20));
  1095.     digiOutDoesHW_DMA            = 1 * (2**(21));                { digitizer not constrained to local device }
  1096.     digiOutDoesHWPlayThru        = 1 * (2**(22));                { digitizer doesn't need time to play thru }
  1097.     digiOutDoesILUT                = 1 * (2**(23));                { digitizer does inverse LUT for index modes }
  1098.     digiOutDoesKeyColor            = 1 * (2**(24));                { digitizer does key color functions too }
  1099.     digiOutDoesAsyncGrabs        = 1 * (2**(25));                { digitizer supports async grabs }
  1100.     digiOutDoesUnreadableScreenBits = 1 * (2**(26));            { playthru doesn't generate readable bits on screen}
  1101.     digiOutDoesCompress            = 1 * (2**(27));                { supports alternate output data types }
  1102.     digiOutDoesCompressOnly        = 1 * (2**(28));                { can't provide raw frames anywhere }
  1103.     digiOutDoesPlayThruDuringCompress = 1 * (2**(29));            { digi can do playthru while providing compressed data }
  1104.  
  1105. { Types }
  1106.     
  1107. TYPE
  1108.     VideoDigitizerComponent = ComponentInstance;
  1109.  
  1110.     VideoDigitizerError = ComponentResult;
  1111.  
  1112.     DigitizerInfo = RECORD
  1113.         vdigType:                INTEGER;
  1114.         inputCapabilityFlags:    LONGINT;
  1115.         outputCapabilityFlags:    LONGINT;
  1116.         inputCurrentFlags:        LONGINT;
  1117.         outputCurrentFlags:        LONGINT;
  1118.         slot:                    INTEGER;                                { temporary for connection purposes }
  1119.         gdh:                    GDHandle;                                { temporary for digitizers that have preferred screen }
  1120.         maskgdh:                GDHandle;                                { temporary for digitizers that have mask planes }
  1121.         minDestHeight:            INTEGER;                                { Smallest resizable height }
  1122.         minDestWidth:            INTEGER;                                { Smallest resizable width }
  1123.         maxDestHeight:            INTEGER;                                { Largest resizable height }
  1124.         maxDestWidth:            INTEGER;                                { Largest resizable height }
  1125.         blendLevels:            INTEGER;                                { Number of blend levels supported (2 if 1 bit mask) }
  1126.         reserved:                LONGINT;                                { reserved }
  1127.     END;
  1128.     VdigType = RECORD
  1129.         digType:                LONGINT;
  1130.         reserved:                LONGINT;
  1131.     END;
  1132.     VdigTypeList = RECORD
  1133.         count:                    INTEGER;
  1134.         list:                    ARRAY [0..0] OF VdigType;
  1135.     END;
  1136.     VdigBufferRec = RECORD
  1137.         dest:                    PixMapHandle;
  1138.         location:                Point;
  1139.         reserved:                LONGINT;
  1140.     END;
  1141.     VdigBufferRecList = RECORD
  1142.         count:                    INTEGER;
  1143.         matrix:                    MatrixRecordPtr;
  1144.         mask:                    RgnHandle;
  1145.         list:                    ARRAY [0..0] OF VdigBufferRec;
  1146.     END;
  1147.     VdigBufferRecListPtr = ^VdigBufferRecList;
  1148.     VdigBufferRecListHandle = ^VdigBufferRecListPtr;
  1149.  
  1150.     VdigIntProcPtr = ProcPtr;  { PROCEDURE VdigInt(flags: LONGINT; refcon: LONGINT); }
  1151.     VdigIntUPP = UniversalProcPtr;
  1152.  
  1153.     VDCompressionList = RECORD
  1154.         codec:                    CodecComponent;
  1155.         cType:                    CodecType;
  1156.         typeName:                Str63;
  1157.         name:                    Str63;
  1158.         formatFlags:            LONGINT;
  1159.         compressFlags:            LONGINT;
  1160.         reserved:                LONGINT;
  1161.     END;
  1162.     VDCompressionListPtr = ^VDCompressionList;
  1163.     VDCompressionListHandle = ^VDCompressionListPtr;
  1164.  
  1165.  
  1166. CONST
  1167.     dmaDepth1                    = 1;
  1168.     dmaDepth2                    = 2;
  1169.     dmaDepth4                    = 4;
  1170.     dmaDepth8                    = 8;
  1171.     dmaDepth16                    = 16;
  1172.     dmaDepth32                    = 32;
  1173.     dmaDepth2Gray                = 64;
  1174.     dmaDepth4Gray                = 128;
  1175.     dmaDepth8Gray                = 256;
  1176.  
  1177.     kVDIGControlledFrameRate    = -1;
  1178.  
  1179. { number of vdig calls}
  1180.     kvdigSelectors                = 86;
  1181.  
  1182.  
  1183. FUNCTION VDGetMaxSrcRect(ci: VideoDigitizerComponent; inputStd: INTEGER; VAR maxSrcRect: Rect): VideoDigitizerError;
  1184.     {$IFC NOT GENERATINGCFM}
  1185.     INLINE $2F3C, $6, $1, $7000, $A82A;
  1186.     {$ENDC}
  1187. FUNCTION VDGetActiveSrcRect(ci: VideoDigitizerComponent; inputStd: INTEGER; VAR activeSrcRect: Rect): VideoDigitizerError;
  1188.     {$IFC NOT GENERATINGCFM}
  1189.     INLINE $2F3C, $6, $2, $7000, $A82A;
  1190.     {$ENDC}
  1191. FUNCTION VDSetDigitizerRect(ci: VideoDigitizerComponent; VAR digitizerRect: Rect): VideoDigitizerError;
  1192.     {$IFC NOT GENERATINGCFM}
  1193.     INLINE $2F3C, $4, $3, $7000, $A82A;
  1194.     {$ENDC}
  1195. FUNCTION VDGetDigitizerRect(ci: VideoDigitizerComponent; VAR digitizerRect: Rect): VideoDigitizerError;
  1196.     {$IFC NOT GENERATINGCFM}
  1197.     INLINE $2F3C, $4, $4, $7000, $A82A;
  1198.     {$ENDC}
  1199. FUNCTION VDGetVBlankRect(ci: VideoDigitizerComponent; inputStd: INTEGER; VAR vBlankRect: Rect): VideoDigitizerError;
  1200.     {$IFC NOT GENERATINGCFM}
  1201.     INLINE $2F3C, $6, $5, $7000, $A82A;
  1202.     {$ENDC}
  1203. FUNCTION VDGetMaskPixMap(ci: VideoDigitizerComponent; maskPixMap: PixMapHandle): VideoDigitizerError;
  1204.     {$IFC NOT GENERATINGCFM}
  1205.     INLINE $2F3C, $4, $6, $7000, $A82A;
  1206.     {$ENDC}
  1207. FUNCTION VDGetPlayThruDestination(ci: VideoDigitizerComponent; VAR dest: PixMapHandle; VAR destRect: Rect; VAR m: MatrixRecord; VAR mask: RgnHandle): VideoDigitizerError;
  1208.     {$IFC NOT GENERATINGCFM}
  1209.     INLINE $2F3C, $10, $8, $7000, $A82A;
  1210.     {$ENDC}
  1211. FUNCTION VDUseThisCLUT(ci: VideoDigitizerComponent; colorTableHandle: CTabHandle): VideoDigitizerError;
  1212.     {$IFC NOT GENERATINGCFM}
  1213.     INLINE $2F3C, $4, $9, $7000, $A82A;
  1214.     {$ENDC}
  1215. FUNCTION VDSetInputGammaValue(ci: VideoDigitizerComponent; channel1: Fixed; channel2: Fixed; channel3: Fixed): VideoDigitizerError;
  1216.     {$IFC NOT GENERATINGCFM}
  1217.     INLINE $2F3C, $C, $A, $7000, $A82A;
  1218.     {$ENDC}
  1219. FUNCTION VDGetInputGammaValue(ci: VideoDigitizerComponent; VAR channel1: Fixed; VAR channel2: Fixed; VAR channel3: Fixed): VideoDigitizerError;
  1220.     {$IFC NOT GENERATINGCFM}
  1221.     INLINE $2F3C, $C, $B, $7000, $A82A;
  1222.     {$ENDC}
  1223. FUNCTION VDSetBrightness(ci: VideoDigitizerComponent; VAR brightness: INTEGER): VideoDigitizerError;
  1224.     {$IFC NOT GENERATINGCFM}
  1225.     INLINE $2F3C, $4, $C, $7000, $A82A;
  1226.     {$ENDC}
  1227. FUNCTION VDGetBrightness(ci: VideoDigitizerComponent; VAR brightness: INTEGER): VideoDigitizerError;
  1228.     {$IFC NOT GENERATINGCFM}
  1229.     INLINE $2F3C, $4, $D, $7000, $A82A;
  1230.     {$ENDC}
  1231. FUNCTION VDSetContrast(ci: VideoDigitizerComponent; VAR contrast: INTEGER): VideoDigitizerError;
  1232.     {$IFC NOT GENERATINGCFM}
  1233.     INLINE $2F3C, $4, $E, $7000, $A82A;
  1234.     {$ENDC}
  1235. FUNCTION VDSetHue(ci: VideoDigitizerComponent; VAR hue: INTEGER): VideoDigitizerError;
  1236.     {$IFC NOT GENERATINGCFM}
  1237.     INLINE $2F3C, $4, $F, $7000, $A82A;
  1238.     {$ENDC}
  1239. FUNCTION VDSetSharpness(ci: VideoDigitizerComponent; VAR sharpness: INTEGER): VideoDigitizerError;
  1240.     {$IFC NOT GENERATINGCFM}
  1241.     INLINE $2F3C, $4, $10, $7000, $A82A;
  1242.     {$ENDC}
  1243. FUNCTION VDSetSaturation(ci: VideoDigitizerComponent; VAR saturation: INTEGER): VideoDigitizerError;
  1244.     {$IFC NOT GENERATINGCFM}
  1245.     INLINE $2F3C, $4, $11, $7000, $A82A;
  1246.     {$ENDC}
  1247. FUNCTION VDGetContrast(ci: VideoDigitizerComponent; VAR contrast: INTEGER): VideoDigitizerError;
  1248.     {$IFC NOT GENERATINGCFM}
  1249.     INLINE $2F3C, $4, $12, $7000, $A82A;
  1250.     {$ENDC}
  1251. FUNCTION VDGetHue(ci: VideoDigitizerComponent; VAR hue: INTEGER): VideoDigitizerError;
  1252.     {$IFC NOT GENERATINGCFM}
  1253.     INLINE $2F3C, $4, $13, $7000, $A82A;
  1254.     {$ENDC}
  1255. FUNCTION VDGetSharpness(ci: VideoDigitizerComponent; VAR sharpness: INTEGER): VideoDigitizerError;
  1256.     {$IFC NOT GENERATINGCFM}
  1257.     INLINE $2F3C, $4, $14, $7000, $A82A;
  1258.     {$ENDC}
  1259. FUNCTION VDGetSaturation(ci: VideoDigitizerComponent; VAR saturation: INTEGER): VideoDigitizerError;
  1260.     {$IFC NOT GENERATINGCFM}
  1261.     INLINE $2F3C, $4, $15, $7000, $A82A;
  1262.     {$ENDC}
  1263. FUNCTION VDGrabOneFrame(ci: VideoDigitizerComponent): VideoDigitizerError;
  1264.     {$IFC NOT GENERATINGCFM}
  1265.     INLINE $2F3C, 0, $16, $7000, $A82A;
  1266.     {$ENDC}
  1267. FUNCTION VDGetMaxAuxBuffer(ci: VideoDigitizerComponent; VAR pm: PixMapHandle; VAR r: Rect): VideoDigitizerError;
  1268.     {$IFC NOT GENERATINGCFM}
  1269.     INLINE $2F3C, $8, $17, $7000, $A82A;
  1270.     {$ENDC}
  1271. FUNCTION VDGetDigitizerInfo(ci: VideoDigitizerComponent; VAR info: DigitizerInfo): VideoDigitizerError;
  1272.     {$IFC NOT GENERATINGCFM}
  1273.     INLINE $2F3C, $4, $19, $7000, $A82A;
  1274.     {$ENDC}
  1275. FUNCTION VDGetCurrentFlags(ci: VideoDigitizerComponent; VAR inputCurrentFlag: LONGINT; VAR outputCurrentFlag: LONGINT): VideoDigitizerError;
  1276.     {$IFC NOT GENERATINGCFM}
  1277.     INLINE $2F3C, $8, $1A, $7000, $A82A;
  1278.     {$ENDC}
  1279. FUNCTION VDSetKeyColor(ci: VideoDigitizerComponent; index: LONGINT): VideoDigitizerError;
  1280.     {$IFC NOT GENERATINGCFM}
  1281.     INLINE $2F3C, $4, $1B, $7000, $A82A;
  1282.     {$ENDC}
  1283. FUNCTION VDGetKeyColor(ci: VideoDigitizerComponent; VAR index: LONGINT): VideoDigitizerError;
  1284.     {$IFC NOT GENERATINGCFM}
  1285.     INLINE $2F3C, $4, $1C, $7000, $A82A;
  1286.     {$ENDC}
  1287. FUNCTION VDAddKeyColor(ci: VideoDigitizerComponent; VAR index: LONGINT): VideoDigitizerError;
  1288.     {$IFC NOT GENERATINGCFM}
  1289.     INLINE $2F3C, $4, $1D, $7000, $A82A;
  1290.     {$ENDC}
  1291. FUNCTION VDGetNextKeyColor(ci: VideoDigitizerComponent; index: LONGINT): VideoDigitizerError;
  1292.     {$IFC NOT GENERATINGCFM}
  1293.     INLINE $2F3C, $4, $1E, $7000, $A82A;
  1294.     {$ENDC}
  1295. FUNCTION VDSetKeyColorRange(ci: VideoDigitizerComponent; VAR minRGB: RGBColor; VAR maxRGB: RGBColor): VideoDigitizerError;
  1296.     {$IFC NOT GENERATINGCFM}
  1297.     INLINE $2F3C, $8, $1F, $7000, $A82A;
  1298.     {$ENDC}
  1299. FUNCTION VDGetKeyColorRange(ci: VideoDigitizerComponent; VAR minRGB: RGBColor; VAR maxRGB: RGBColor): VideoDigitizerError;
  1300.     {$IFC NOT GENERATINGCFM}
  1301.     INLINE $2F3C, $8, $20, $7000, $A82A;
  1302.     {$ENDC}
  1303. FUNCTION VDSetDigitizerUserInterrupt(ci: VideoDigitizerComponent; flags: LONGINT; userInterruptProc: VdigIntUPP; refcon: LONGINT): VideoDigitizerError;
  1304.     {$IFC NOT GENERATINGCFM}
  1305.     INLINE $2F3C, $C, $21, $7000, $A82A;
  1306.     {$ENDC}
  1307. FUNCTION VDSetInputColorSpaceMode(ci: VideoDigitizerComponent; colorSpaceMode: INTEGER): VideoDigitizerError;
  1308.     {$IFC NOT GENERATINGCFM}
  1309.     INLINE $2F3C, $2, $22, $7000, $A82A;
  1310.     {$ENDC}
  1311. FUNCTION VDGetInputColorSpaceMode(ci: VideoDigitizerComponent; VAR colorSpaceMode: INTEGER): VideoDigitizerError;
  1312.     {$IFC NOT GENERATINGCFM}
  1313.     INLINE $2F3C, $4, $23, $7000, $A82A;
  1314.     {$ENDC}
  1315. FUNCTION VDSetClipState(ci: VideoDigitizerComponent; clipEnable: INTEGER): VideoDigitizerError;
  1316.     {$IFC NOT GENERATINGCFM}
  1317.     INLINE $2F3C, $2, $24, $7000, $A82A;
  1318.     {$ENDC}
  1319. FUNCTION VDGetClipState(ci: VideoDigitizerComponent; VAR clipEnable: INTEGER): VideoDigitizerError;
  1320.     {$IFC NOT GENERATINGCFM}
  1321.     INLINE $2F3C, $4, $25, $7000, $A82A;
  1322.     {$ENDC}
  1323. FUNCTION VDSetClipRgn(ci: VideoDigitizerComponent; clipRegion: RgnHandle): VideoDigitizerError;
  1324.     {$IFC NOT GENERATINGCFM}
  1325.     INLINE $2F3C, $4, $26, $7000, $A82A;
  1326.     {$ENDC}
  1327. FUNCTION VDClearClipRgn(ci: VideoDigitizerComponent; clipRegion: RgnHandle): VideoDigitizerError;
  1328.     {$IFC NOT GENERATINGCFM}
  1329.     INLINE $2F3C, $4, $27, $7000, $A82A;
  1330.     {$ENDC}
  1331. FUNCTION VDGetCLUTInUse(ci: VideoDigitizerComponent; VAR colorTableHandle: CTabHandle): VideoDigitizerError;
  1332.     {$IFC NOT GENERATINGCFM}
  1333.     INLINE $2F3C, $4, $28, $7000, $A82A;
  1334.     {$ENDC}
  1335. FUNCTION VDSetPLLFilterType(ci: VideoDigitizerComponent; pllType: INTEGER): VideoDigitizerError;
  1336.     {$IFC NOT GENERATINGCFM}
  1337.     INLINE $2F3C, $2, $29, $7000, $A82A;
  1338.     {$ENDC}
  1339. FUNCTION VDGetPLLFilterType(ci: VideoDigitizerComponent; VAR pllType: INTEGER): VideoDigitizerError;
  1340.     {$IFC NOT GENERATINGCFM}
  1341.     INLINE $2F3C, $4, $2A, $7000, $A82A;
  1342.     {$ENDC}
  1343. FUNCTION VDGetMaskandValue(ci: VideoDigitizerComponent; blendLevel: INTEGER; VAR mask: LONGINT; VAR value: LONGINT): VideoDigitizerError;
  1344.     {$IFC NOT GENERATINGCFM}
  1345.     INLINE $2F3C, $A, $2B, $7000, $A82A;
  1346.     {$ENDC}
  1347. FUNCTION VDSetMasterBlendLevel(ci: VideoDigitizerComponent; VAR blendLevel: INTEGER): VideoDigitizerError;
  1348.     {$IFC NOT GENERATINGCFM}
  1349.     INLINE $2F3C, $4, $2C, $7000, $A82A;
  1350.     {$ENDC}
  1351. FUNCTION VDSetPlayThruDestination(ci: VideoDigitizerComponent; dest: PixMapHandle; VAR destRect: Rect; VAR m: MatrixRecord; mask: RgnHandle): VideoDigitizerError;
  1352.     {$IFC NOT GENERATINGCFM}
  1353.     INLINE $2F3C, $10, $2D, $7000, $A82A;
  1354.     {$ENDC}
  1355. FUNCTION VDSetPlayThruOnOff(ci: VideoDigitizerComponent; state: INTEGER): VideoDigitizerError;
  1356.     {$IFC NOT GENERATINGCFM}
  1357.     INLINE $2F3C, $2, $2E, $7000, $A82A;
  1358.     {$ENDC}
  1359. FUNCTION VDSetFieldPreference(ci: VideoDigitizerComponent; fieldFlag: INTEGER): VideoDigitizerError;
  1360.     {$IFC NOT GENERATINGCFM}
  1361.     INLINE $2F3C, $2, $2F, $7000, $A82A;
  1362.     {$ENDC}
  1363. FUNCTION VDGetFieldPreference(ci: VideoDigitizerComponent; VAR fieldFlag: INTEGER): VideoDigitizerError;
  1364.     {$IFC NOT GENERATINGCFM}
  1365.     INLINE $2F3C, $4, $30, $7000, $A82A;
  1366.     {$ENDC}
  1367. FUNCTION VDPreflightDestination(ci: VideoDigitizerComponent; VAR digitizerRect: Rect; VAR dest: PixMap; VAR destRect: Rect; VAR m: MatrixRecord): VideoDigitizerError;
  1368.     {$IFC NOT GENERATINGCFM}
  1369.     INLINE $2F3C, $10, $32, $7000, $A82A;
  1370.     {$ENDC}
  1371. FUNCTION VDPreflightGlobalRect(ci: VideoDigitizerComponent; theWindow: GrafPtr; VAR globalRect: Rect): VideoDigitizerError;
  1372.     {$IFC NOT GENERATINGCFM}
  1373.     INLINE $2F3C, $8, $33, $7000, $A82A;
  1374.     {$ENDC}
  1375. FUNCTION VDSetPlayThruGlobalRect(ci: VideoDigitizerComponent; theWindow: GrafPtr; VAR globalRect: Rect): VideoDigitizerError;
  1376.     {$IFC NOT GENERATINGCFM}
  1377.     INLINE $2F3C, $8, $34, $7000, $A82A;
  1378.     {$ENDC}
  1379. FUNCTION VDSetInputGammaRecord(ci: VideoDigitizerComponent; inputGammaPtr: VDGamRecPtr): VideoDigitizerError;
  1380.     {$IFC NOT GENERATINGCFM}
  1381.     INLINE $2F3C, $4, $35, $7000, $A82A;
  1382.     {$ENDC}
  1383. FUNCTION VDGetInputGammaRecord(ci: VideoDigitizerComponent; VAR inputGammaPtr: VDGamRecPtr): VideoDigitizerError;
  1384.     {$IFC NOT GENERATINGCFM}
  1385.     INLINE $2F3C, $4, $36, $7000, $A82A;
  1386.     {$ENDC}
  1387. FUNCTION VDSetBlackLevelValue(ci: VideoDigitizerComponent; VAR blackLevel: INTEGER): VideoDigitizerError;
  1388.     {$IFC NOT GENERATINGCFM}
  1389.     INLINE $2F3C, $4, $37, $7000, $A82A;
  1390.     {$ENDC}
  1391. FUNCTION VDGetBlackLevelValue(ci: VideoDigitizerComponent; VAR blackLevel: INTEGER): VideoDigitizerError;
  1392.     {$IFC NOT GENERATINGCFM}
  1393.     INLINE $2F3C, $4, $38, $7000, $A82A;
  1394.     {$ENDC}
  1395. FUNCTION VDSetWhiteLevelValue(ci: VideoDigitizerComponent; VAR whiteLevel: INTEGER): VideoDigitizerError;
  1396.     {$IFC NOT GENERATINGCFM}
  1397.     INLINE $2F3C, $4, $39, $7000, $A82A;
  1398.     {$ENDC}
  1399. FUNCTION VDGetWhiteLevelValue(ci: VideoDigitizerComponent; VAR whiteLevel: INTEGER): VideoDigitizerError;
  1400.     {$IFC NOT GENERATINGCFM}
  1401.     INLINE $2F3C, $4, $3A, $7000, $A82A;
  1402.     {$ENDC}
  1403. FUNCTION VDGetVideoDefaults(ci: VideoDigitizerComponent; VAR blackLevel: INTEGER; VAR whiteLevel: INTEGER; VAR brightness: INTEGER; VAR hue: INTEGER; VAR saturation: INTEGER; VAR contrast: INTEGER; VAR sharpness: INTEGER): VideoDigitizerError;
  1404.     {$IFC NOT GENERATINGCFM}
  1405.     INLINE $2F3C, $1C, $3B, $7000, $A82A;
  1406.     {$ENDC}
  1407. FUNCTION VDGetNumberOfInputs(ci: VideoDigitizerComponent; VAR inputs: INTEGER): VideoDigitizerError;
  1408.     {$IFC NOT GENERATINGCFM}
  1409.     INLINE $2F3C, $4, $3C, $7000, $A82A;
  1410.     {$ENDC}
  1411. FUNCTION VDGetInputFormat(ci: VideoDigitizerComponent; input: INTEGER; VAR format: INTEGER): VideoDigitizerError;
  1412.     {$IFC NOT GENERATINGCFM}
  1413.     INLINE $2F3C, $6, $3D, $7000, $A82A;
  1414.     {$ENDC}
  1415. FUNCTION VDSetInput(ci: VideoDigitizerComponent; input: INTEGER): VideoDigitizerError;
  1416.     {$IFC NOT GENERATINGCFM}
  1417.     INLINE $2F3C, $2, $3E, $7000, $A82A;
  1418.     {$ENDC}
  1419. FUNCTION VDGetInput(ci: VideoDigitizerComponent; VAR input: INTEGER): VideoDigitizerError;
  1420.     {$IFC NOT GENERATINGCFM}
  1421.     INLINE $2F3C, $4, $3F, $7000, $A82A;
  1422.     {$ENDC}
  1423. FUNCTION VDSetInputStandard(ci: VideoDigitizerComponent; inputStandard: INTEGER): VideoDigitizerError;
  1424.     {$IFC NOT GENERATINGCFM}
  1425.     INLINE $2F3C, $2, $40, $7000, $A82A;
  1426.     {$ENDC}
  1427. FUNCTION VDSetupBuffers(ci: VideoDigitizerComponent; bufferList: VdigBufferRecListHandle): VideoDigitizerError;
  1428.     {$IFC NOT GENERATINGCFM}
  1429.     INLINE $2F3C, $4, $41, $7000, $A82A;
  1430.     {$ENDC}
  1431. FUNCTION VDGrabOneFrameAsync(ci: VideoDigitizerComponent; buffer: INTEGER): VideoDigitizerError;
  1432.     {$IFC NOT GENERATINGCFM}
  1433.     INLINE $2F3C, $2, $42, $7000, $A82A;
  1434.     {$ENDC}
  1435. FUNCTION VDDone(ci: VideoDigitizerComponent; buffer: INTEGER): VideoDigitizerError;
  1436.     {$IFC NOT GENERATINGCFM}
  1437.     INLINE $2F3C, $2, $43, $7000, $A82A;
  1438.     {$ENDC}
  1439. FUNCTION VDSetCompression(ci: VideoDigitizerComponent; compressType: OSType; depth: INTEGER; VAR bounds: Rect; spatialQuality: CodecQ; temporalQuality: CodecQ; keyFrameRate: LONGINT): VideoDigitizerError;
  1440.     {$IFC NOT GENERATINGCFM}
  1441.     INLINE $2F3C, $16, $44, $7000, $A82A;
  1442.     {$ENDC}
  1443. FUNCTION VDCompressOneFrameAsync(ci: VideoDigitizerComponent): VideoDigitizerError;
  1444.     {$IFC NOT GENERATINGCFM}
  1445.     INLINE $2F3C, 0, $45, $7000, $A82A;
  1446.     {$ENDC}
  1447. FUNCTION VDCompressDone(ci: VideoDigitizerComponent; VAR done: BOOLEAN; VAR theData: Ptr; VAR dataSize: LONGINT; VAR similarity: UInt8; VAR t: TimeRecord): VideoDigitizerError;
  1448.     {$IFC NOT GENERATINGCFM}
  1449.     INLINE $2F3C, $14, $46, $7000, $A82A;
  1450.     {$ENDC}
  1451. FUNCTION VDReleaseCompressBuffer(ci: VideoDigitizerComponent; bufferAddr: Ptr): VideoDigitizerError;
  1452.     {$IFC NOT GENERATINGCFM}
  1453.     INLINE $2F3C, $4, $47, $7000, $A82A;
  1454.     {$ENDC}
  1455. FUNCTION VDGetImageDescription(ci: VideoDigitizerComponent; desc: ImageDescriptionHandle): VideoDigitizerError;
  1456.     {$IFC NOT GENERATINGCFM}
  1457.     INLINE $2F3C, $4, $48, $7000, $A82A;
  1458.     {$ENDC}
  1459. FUNCTION VDResetCompressSequence(ci: VideoDigitizerComponent): VideoDigitizerError;
  1460.     {$IFC NOT GENERATINGCFM}
  1461.     INLINE $2F3C, 0, $49, $7000, $A82A;
  1462.     {$ENDC}
  1463. FUNCTION VDSetCompressionOnOff(ci: VideoDigitizerComponent; state: BOOLEAN): VideoDigitizerError;
  1464.     {$IFC NOT GENERATINGCFM}
  1465.     INLINE $2F3C, $2, $4A, $7000, $A82A;
  1466.     {$ENDC}
  1467. FUNCTION VDGetCompressionTypes(ci: VideoDigitizerComponent; h: VDCompressionListHandle): VideoDigitizerError;
  1468.     {$IFC NOT GENERATINGCFM}
  1469.     INLINE $2F3C, $4, $4B, $7000, $A82A;
  1470.     {$ENDC}
  1471. FUNCTION VDSetTimeBase(ci: VideoDigitizerComponent; t: TimeBase): VideoDigitizerError;
  1472.     {$IFC NOT GENERATINGCFM}
  1473.     INLINE $2F3C, $4, $4C, $7000, $A82A;
  1474.     {$ENDC}
  1475. FUNCTION VDSetFrameRate(ci: VideoDigitizerComponent; framesPerSecond: Fixed): VideoDigitizerError;
  1476.     {$IFC NOT GENERATINGCFM}
  1477.     INLINE $2F3C, $4, $4D, $7000, $A82A;
  1478.     {$ENDC}
  1479. FUNCTION VDGetDataRate(ci: VideoDigitizerComponent; VAR milliSecPerFrame: LONGINT; VAR framesPerSecond: Fixed; VAR bytesPerSecond: LONGINT): VideoDigitizerError;
  1480.     {$IFC NOT GENERATINGCFM}
  1481.     INLINE $2F3C, $C, $4E, $7000, $A82A;
  1482.     {$ENDC}
  1483. FUNCTION VDGetSoundInputDriver(ci: VideoDigitizerComponent; VAR soundDriverName: Str255): VideoDigitizerError;
  1484.     {$IFC NOT GENERATINGCFM}
  1485.     INLINE $2F3C, $4, $4F, $7000, $A82A;
  1486.     {$ENDC}
  1487. FUNCTION VDGetDMADepths(ci: VideoDigitizerComponent; VAR depthArray: LONGINT; VAR preferredDepth: LONGINT): VideoDigitizerError;
  1488.     {$IFC NOT GENERATINGCFM}
  1489.     INLINE $2F3C, $8, $50, $7000, $A82A;
  1490.     {$ENDC}
  1491. FUNCTION VDGetPreferredTimeScale(ci: VideoDigitizerComponent; VAR preferred: TimeScale): VideoDigitizerError;
  1492.     {$IFC NOT GENERATINGCFM}
  1493.     INLINE $2F3C, $4, $51, $7000, $A82A;
  1494.     {$ENDC}
  1495. FUNCTION VDReleaseAsyncBuffers(ci: VideoDigitizerComponent): VideoDigitizerError;
  1496.     {$IFC NOT GENERATINGCFM}
  1497.     INLINE $2F3C, 0, $52, $7000, $A82A;
  1498.     {$ENDC}
  1499. { 83 is reserved for compatibility reasons }
  1500. FUNCTION VDSetDataRate(ci: VideoDigitizerComponent; bytesPerSecond: LONGINT): VideoDigitizerError;
  1501.     {$IFC NOT GENERATINGCFM}
  1502.     INLINE $2F3C, $4, $54, $7000, $A82A;
  1503.     {$ENDC}
  1504. FUNCTION VDGetTimeCode(ci: VideoDigitizerComponent; VAR atTime: TimeRecord; timeCodeFormat: UNIV Ptr; timeCodeTime: UNIV Ptr): VideoDigitizerError;
  1505.     {$IFC NOT GENERATINGCFM}
  1506.     INLINE $2F3C, $C, $55, $7000, $A82A;
  1507.     {$ENDC}
  1508. FUNCTION VDUseSafeBuffers(ci: VideoDigitizerComponent; useSafeBuffers: BOOLEAN): VideoDigitizerError;
  1509.     {$IFC NOT GENERATINGCFM}
  1510.     INLINE $2F3C, $2, $56, $7000, $A82A;
  1511.     {$ENDC}
  1512.  
  1513. CONST
  1514.     kSelectVDGetMaxSrcRect        = $1;
  1515.     kSelectVDGetActiveSrcRect    = $2;
  1516.     kSelectVDSetDigitizerRect    = $3;
  1517.     kSelectVDGetDigitizerRect    = $4;
  1518.     kSelectVDGetVBlankRect        = $5;
  1519.     kSelectVDGetMaskPixMap        = $6;
  1520.     kSelectVDGetPlayThruDestination = $8;
  1521.     kSelectVDUseThisCLUT        = $9;
  1522.     kSelectVDSetInputGammaValue    = $A;
  1523.     kSelectVDGetInputGammaValue    = $B;
  1524.     kSelectVDSetBrightness        = $C;
  1525.     kSelectVDGetBrightness        = $D;
  1526.     kSelectVDSetContrast        = $E;
  1527.     kSelectVDSetHue                = $F;
  1528.     kSelectVDSetSharpness        = $10;
  1529.     kSelectVDSetSaturation        = $11;
  1530.     kSelectVDGetContrast        = $12;
  1531.     kSelectVDGetHue                = $13;
  1532.     kSelectVDGetSharpness        = $14;
  1533.     kSelectVDGetSaturation        = $15;
  1534.     kSelectVDGrabOneFrame        = $16;
  1535.     kSelectVDGetMaxAuxBuffer    = $17;
  1536.     kSelectVDGetDigitizerInfo    = $19;
  1537.     kSelectVDGetCurrentFlags    = $1A;
  1538.     kSelectVDSetKeyColor        = $1B;
  1539.     kSelectVDGetKeyColor        = $1C;
  1540.     kSelectVDAddKeyColor        = $1D;
  1541.     kSelectVDGetNextKeyColor    = $1E;
  1542.     kSelectVDSetKeyColorRange    = $1F;
  1543.     kSelectVDGetKeyColorRange    = $20;
  1544.     kSelectVDSetDigitizerUserInterrupt = $21;
  1545.     kSelectVDSetInputColorSpaceMode = $22;
  1546.     kSelectVDGetInputColorSpaceMode = $23;
  1547.     kSelectVDSetClipState        = $24;
  1548.     kSelectVDGetClipState        = $25;
  1549.     kSelectVDSetClipRgn            = $26;
  1550.     kSelectVDClearClipRgn        = $27;
  1551.     kSelectVDGetCLUTInUse        = $28;
  1552.     kSelectVDSetPLLFilterType    = $29;
  1553.     kSelectVDGetPLLFilterType    = $2A;
  1554.     kSelectVDGetMaskandValue    = $2B;
  1555.     kSelectVDSetMasterBlendLevel = $2C;
  1556.     kSelectVDSetPlayThruDestination = $2D;
  1557.     kSelectVDSetPlayThruOnOff    = $2E;
  1558.     kSelectVDSetFieldPreference    = $2F;
  1559.     kSelectVDGetFieldPreference    = $30;
  1560.     kSelectVDPreflightDestination = $32;
  1561.     kSelectVDPreflightGlobalRect = $33;
  1562.     kSelectVDSetPlayThruGlobalRect = $34;
  1563.     kSelectVDSetInputGammaRecord = $35;
  1564.     kSelectVDGetInputGammaRecord = $36;
  1565.     kSelectVDSetBlackLevelValue    = $37;
  1566.     kSelectVDGetBlackLevelValue    = $38;
  1567.     kSelectVDSetWhiteLevelValue    = $39;
  1568.     kSelectVDGetWhiteLevelValue    = $3A;
  1569.     kSelectVDGetVideoDefaults    = $3B;
  1570.     kSelectVDGetNumberOfInputs    = $3C;
  1571.     kSelectVDGetInputFormat        = $3D;
  1572.     kSelectVDSetInput            = $3E;
  1573.     kSelectVDGetInput            = $3F;
  1574.     kSelectVDSetInputStandard    = $40;
  1575.     kSelectVDSetupBuffers        = $41;
  1576.     kSelectVDGrabOneFrameAsync    = $42;
  1577.     kSelectVDDone                = $43;
  1578.     kSelectVDSetCompression        = $44;
  1579.     kSelectVDCompressOneFrameAsync = $45;
  1580.     kSelectVDCompressDone        = $46;
  1581.     kSelectVDReleaseCompressBuffer = $47;
  1582.     kSelectVDGetImageDescription = $48;
  1583.     kSelectVDResetCompressSequence = $49;
  1584.     kSelectVDSetCompressionOnOff = $4A;
  1585.     kSelectVDGetCompressionTypes = $4B;
  1586.     kSelectVDSetTimeBase        = $4C;
  1587.     kSelectVDSetFrameRate        = $4D;
  1588.     kSelectVDGetDataRate        = $4E;
  1589.     kSelectVDGetSoundInputDriver = $4F;
  1590.     kSelectVDGetDMADepths        = $50;
  1591.     kSelectVDGetPreferredTimeScale = $51;
  1592.     kSelectVDReleaseAsyncBuffers = $52;
  1593.     kSelectVDSetDataRate        = $54;
  1594.     kSelectVDGetTimeCode        = $55;
  1595.     kSelectVDUseSafeBuffers        = $56;
  1596.  
  1597.     StandardCompressionType        = 'scdi';
  1598.     StandardCompressionSubType    = 'imag';
  1599.  
  1600. TYPE
  1601.     SCModalFilterProcPtr = ProcPtr;  { FUNCTION SCModalFilter(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; refcon: LONGINT): BOOLEAN; }
  1602.     SCModalHookProcPtr = ProcPtr;  { FUNCTION SCModalHook(theDialog: DialogPtr; itemHit: INTEGER; params: UNIV Ptr; refcon: LONGINT): INTEGER; }
  1603.     SCModalFilterUPP = UniversalProcPtr;
  1604.     SCModalHookUPP = UniversalProcPtr;
  1605.  
  1606.  
  1607. CONST
  1608.     scListEveryCodec            = 1 * (2**(1));
  1609.     scAllowZeroFrameRate        = 1 * (2**(2));
  1610.     scAllowZeroKeyFrameRate        = 1 * (2**(3));
  1611.     scShowBestDepth                = 1 * (2**(4));
  1612.     scUseMovableModal            = 1 * (2**(5));
  1613.  
  1614. {    Possible test flags for setting test image.}
  1615.     scPreferCropping            = 1 * (2**(0));
  1616.     scPreferScaling                = 1 * (2**(1));
  1617.     scPreferScalingAndCropping    = scPreferScaling + scPreferCropping;
  1618.  
  1619. {    Dimensions of the image preview box.}
  1620.     scTestImageWidth            = 80;
  1621.     scTestImageHeight            = 80;
  1622.  
  1623. {    Possible items returned by hookProc.}
  1624.     scOKItem                    = 1;
  1625.     scCancelItem                = 2;
  1626.     scCustomItem                = 3;
  1627.  
  1628. {    Result returned when user cancelled.}
  1629.     scUserCancelled                = 1;
  1630.  
  1631.  
  1632. TYPE
  1633.     SCSpatialSettings = RECORD
  1634.         codecType:                CodecType;
  1635.         codec:                    CodecComponent;
  1636.         depth:                    INTEGER;
  1637.         spatialQuality:            CodecQ;
  1638.     END;
  1639.     SCTemporalSettings = RECORD
  1640.         temporalQuality:        CodecQ;
  1641.         frameRate:                Fixed;
  1642.         keyFrameRate:            LONGINT;
  1643.     END;
  1644.     SCDataRateSettings = RECORD
  1645.         dataRate:                LONGINT;
  1646.         frameDuration:            LONGINT;
  1647.         minSpatialQuality:        CodecQ;
  1648.         minTemporalQuality:        CodecQ;
  1649.     END;
  1650.     SCExtendedProcs = RECORD
  1651.         filterProc:                SCModalFilterUPP;
  1652.         hookProc:                SCModalHookUPP;
  1653.         refcon:                    LONGINT;
  1654.         customName:                Str31;
  1655.     END;
  1656. {    Get/SetInfo selectors}
  1657.  
  1658. CONST
  1659.     scSpatialSettingsType        = 'sptl';                        { pointer to SCSpatialSettings struct}
  1660.     scTemporalSettingsType        = 'tprl';                        { pointer to SCTemporalSettings struct}
  1661.     scDataRateSettingsType        = 'drat';                        { pointer to SCDataRateSettings struct}
  1662.     scColorTableType            = 'clut';                        { pointer to CTabHandle}
  1663.     scProgressProcType            = 'prog';                        { pointer to ProgressRecord struct}
  1664.     scExtendedProcsType            = 'xprc';                        { pointer to SCExtendedProcs struct}
  1665.     scPreferenceFlagsType        = 'pref';                        { pointer to long}
  1666.     scSettingsStateType            = 'ssta';                        { pointer to Handle}
  1667.     scSequenceIDType            = 'sequ';                        { pointer to ImageSequence}
  1668.     scWindowPositionType        = 'wndw';                        { pointer to Point}
  1669.     scCodecFlagsType            = 'cflg';                        { pointer to CodecFlags}
  1670.     scCodecSettingsType            = 'cdec';                        { pointer to Handle}
  1671.     scForceKeyValueType            = 'ksim';
  1672.  
  1673. {    scTypeNotFoundErr returned by Get/SetInfo when type cannot be found.}
  1674. {* These are Progress procedures *}
  1675.  
  1676. FUNCTION SCPositionRect(ci: ComponentInstance; VAR rp: Rect; VAR where: Point): ComponentResult;
  1677.     {$IFC NOT GENERATINGCFM}
  1678.     INLINE $2F3C, $8, $2, $7000, $A82A;
  1679.     {$ENDC}
  1680. FUNCTION SCPositionDialog(ci: ComponentInstance; id: INTEGER; VAR where: Point): ComponentResult;
  1681.     {$IFC NOT GENERATINGCFM}
  1682.     INLINE $2F3C, $6, $3, $7000, $A82A;
  1683.     {$ENDC}
  1684. FUNCTION SCSetTestImagePictHandle(ci: ComponentInstance; testPict: PicHandle; VAR testRect: Rect; testFlags: INTEGER): ComponentResult;
  1685.     {$IFC NOT GENERATINGCFM}
  1686.     INLINE $2F3C, $A, $4, $7000, $A82A;
  1687.     {$ENDC}
  1688. FUNCTION SCSetTestImagePictFile(ci: ComponentInstance; testFileRef: INTEGER; VAR testRect: Rect; testFlags: INTEGER): ComponentResult;
  1689.     {$IFC NOT GENERATINGCFM}
  1690.     INLINE $2F3C, $8, $5, $7000, $A82A;
  1691.     {$ENDC}
  1692. FUNCTION SCSetTestImagePixMap(ci: ComponentInstance; testPixMap: PixMapHandle; VAR testRect: Rect; testFlags: INTEGER): ComponentResult;
  1693.     {$IFC NOT GENERATINGCFM}
  1694.     INLINE $2F3C, $A, $6, $7000, $A82A;
  1695.     {$ENDC}
  1696. FUNCTION SCGetBestDeviceRect(ci: ComponentInstance; VAR r: Rect): ComponentResult;
  1697.     {$IFC NOT GENERATINGCFM}
  1698.     INLINE $2F3C, $4, $7, $7000, $A82A;
  1699.     {$ENDC}
  1700. FUNCTION SCRequestImageSettings(ci: ComponentInstance): ComponentResult;
  1701.     {$IFC NOT GENERATINGCFM}
  1702.     INLINE $2F3C, 0, $A, $7000, $A82A;
  1703.     {$ENDC}
  1704. FUNCTION SCCompressImage(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; VAR desc: ImageDescriptionHandle; VAR data: Handle): ComponentResult;
  1705.     {$IFC NOT GENERATINGCFM}
  1706.     INLINE $2F3C, $10, $B, $7000, $A82A;
  1707.     {$ENDC}
  1708. FUNCTION SCCompressPicture(ci: ComponentInstance; srcPicture: PicHandle; dstPicture: PicHandle): ComponentResult;
  1709.     {$IFC NOT GENERATINGCFM}
  1710.     INLINE $2F3C, $8, $C, $7000, $A82A;
  1711.     {$ENDC}
  1712. FUNCTION SCCompressPictureFile(ci: ComponentInstance; srcRefNum: INTEGER; dstRefNum: INTEGER): ComponentResult;
  1713.     {$IFC NOT GENERATINGCFM}
  1714.     INLINE $2F3C, $4, $D, $7000, $A82A;
  1715.     {$ENDC}
  1716. FUNCTION SCRequestSequenceSettings(ci: ComponentInstance): ComponentResult;
  1717.     {$IFC NOT GENERATINGCFM}
  1718.     INLINE $2F3C, 0, $E, $7000, $A82A;
  1719.     {$ENDC}
  1720. FUNCTION SCCompressSequenceBegin(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; VAR desc: ImageDescriptionHandle): ComponentResult;
  1721.     {$IFC NOT GENERATINGCFM}
  1722.     INLINE $2F3C, $C, $F, $7000, $A82A;
  1723.     {$ENDC}
  1724. FUNCTION SCCompressSequenceFrame(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; VAR data: Handle; VAR dataSize: LONGINT; VAR notSyncFlag: INTEGER): ComponentResult;
  1725.     {$IFC NOT GENERATINGCFM}
  1726.     INLINE $2F3C, $14, $10, $7000, $A82A;
  1727.     {$ENDC}
  1728. FUNCTION SCCompressSequenceEnd(ci: ComponentInstance): ComponentResult;
  1729.     {$IFC NOT GENERATINGCFM}
  1730.     INLINE $2F3C, 0, $11, $7000, $A82A;
  1731.     {$ENDC}
  1732. FUNCTION SCDefaultPictHandleSettings(ci: ComponentInstance; srcPicture: PicHandle; motion: INTEGER): ComponentResult;
  1733.     {$IFC NOT GENERATINGCFM}
  1734.     INLINE $2F3C, $6, $12, $7000, $A82A;
  1735.     {$ENDC}
  1736. FUNCTION SCDefaultPictFileSettings(ci: ComponentInstance; srcRef: INTEGER; motion: INTEGER): ComponentResult;
  1737.     {$IFC NOT GENERATINGCFM}
  1738.     INLINE $2F3C, $4, $13, $7000, $A82A;
  1739.     {$ENDC}
  1740. FUNCTION SCDefaultPixMapSettings(ci: ComponentInstance; src: PixMapHandle; motion: INTEGER): ComponentResult;
  1741.     {$IFC NOT GENERATINGCFM}
  1742.     INLINE $2F3C, $6, $14, $7000, $A82A;
  1743.     {$ENDC}
  1744. FUNCTION SCGetInfo(ci: ComponentInstance; infoType: OSType; info: UNIV Ptr): ComponentResult;
  1745.     {$IFC NOT GENERATINGCFM}
  1746.     INLINE $2F3C, $8, $15, $7000, $A82A;
  1747.     {$ENDC}
  1748. FUNCTION SCSetInfo(ci: ComponentInstance; infoType: OSType; info: UNIV Ptr): ComponentResult;
  1749.     {$IFC NOT GENERATINGCFM}
  1750.     INLINE $2F3C, $8, $16, $7000, $A82A;
  1751.     {$ENDC}
  1752. FUNCTION SCNewGWorld(ci: ComponentInstance; VAR gwp: GWorldPtr; VAR rp: Rect; flags: GWorldFlags): ComponentResult;
  1753.     {$IFC NOT GENERATINGCFM}
  1754.     INLINE $2F3C, $C, $17, $7000, $A82A;
  1755.     {$ENDC}
  1756. FUNCTION SCSetCompressFlags(ci: ComponentInstance; flags: LONGINT): ComponentResult;
  1757.     {$IFC NOT GENERATINGCFM}
  1758.     INLINE $2F3C, $4, $18, $7000, $A82A;
  1759.     {$ENDC}
  1760. FUNCTION SCGetCompressFlags(ci: ComponentInstance; VAR flags: LONGINT): ComponentResult;
  1761.     {$IFC NOT GENERATINGCFM}
  1762.     INLINE $2F3C, $4, $19, $7000, $A82A;
  1763.     {$ENDC}
  1764.  
  1765. TYPE
  1766.     SCParams = RECORD
  1767.         flags:                    LONGINT;
  1768.         theCodecType:            CodecType;
  1769.         theCodec:                CodecComponent;
  1770.         spatialQuality:            CodecQ;
  1771.         temporalQuality:        CodecQ;
  1772.         depth:                    INTEGER;
  1773.         frameRate:                Fixed;
  1774.         keyFrameRate:            LONGINT;
  1775.         reserved1:                LONGINT;
  1776.         reserved2:                LONGINT;
  1777.     END;
  1778.  
  1779. CONST
  1780.     scGetCompression            = 1;
  1781.     scShowMotionSettings        = 1 * (2**(0));
  1782.     scSettingsChangedItem        = -1;
  1783.  
  1784.     scCompressFlagIgnoreIdenticalFrames = 1;
  1785.  
  1786.  
  1787. FUNCTION SCGetCompressionExtended(ci: ComponentInstance; VAR params: SCParams; where: Point; filterProc: SCModalFilterUPP; hookProc: SCModalHookUPP; refcon: LONGINT; customName: StringPtr): ComponentResult;
  1788.     {$IFC NOT GENERATINGCFM}
  1789.     INLINE $2F3C, $18, $1, $7000, $A82A;
  1790.     {$ENDC}
  1791.  
  1792. CONST
  1793.     kSCPositionRectSelect        = $2;
  1794.     kSCPositionDialogSelect        = $3;
  1795.     kSCSetTestImagePictHandleSelect = $4;
  1796.     kSCSetTestImagePictFileSelect = $5;
  1797.     kSCSetTestImagePixMapSelect    = $6;
  1798.     kSCGetBestDeviceRectSelect    = $7;
  1799.     kSCRequestImageSettingsSelect = $A;
  1800.     kSCCompressImageSelect        = $B;
  1801.     kSCCompressPictureSelect    = $C;
  1802.     kSCCompressPictureFileSelect = $D;
  1803.     kSCRequestSequenceSettingsSelect = $E;
  1804.     kSCCompressSequenceBeginSelect = $F;
  1805.     kSCCompressSequenceFrameSelect = $10;
  1806.     kSCCompressSequenceEndSelect = $11;
  1807.     kSCDefaultPictHandleSettingsSelect = $12;
  1808.     kSCDefaultPictFileSettingsSelect = $13;
  1809.     kSCDefaultPixMapSettingsSelect = $14;
  1810.     kSCGetInfoSelect            = $15;
  1811.     kSCSetInfoSelect            = $16;
  1812.     kSCNewGWorldSelect            = $17;
  1813.     kSCSetCompressFlagsSelect    = $18;
  1814.     kSCGetCompressFlagsSelect    = $19;
  1815.     kSCGetCompressionExtendedSelect = $1;
  1816.  
  1817.     
  1818. TYPE
  1819.     MovieImportComponent = ComponentInstance;
  1820.     MovieExportComponent = ComponentInstance;
  1821.  
  1822.  
  1823. CONST
  1824.     MovieImportType                = 'eat ';
  1825.     MovieExportType                = 'spit';
  1826.  
  1827.     canMovieImportHandles        = 1 * (2**(0));
  1828.     canMovieImportFiles            = 1 * (2**(1));
  1829.     hasMovieImportUserInterface    = 1 * (2**(2));
  1830.     canMovieExportHandles        = 1 * (2**(3));
  1831.     canMovieExportFiles            = 1 * (2**(4));
  1832.     hasMovieExportUserInterface    = 1 * (2**(5));
  1833.     dontAutoFileMovieImport        = 1 * (2**(6));
  1834.     canMovieExportAuxDataHandle    = 1 * (2**(7));
  1835.     canMovieImportValidateHandles = 1 * (2**(8));
  1836.     canMovieImportValidateFile    = 1 * (2**(9));
  1837.     dontRegisterWithEasyOpen    = 1 * (2**(10));
  1838.     canMovieImportInPlace        = 1 * (2**(11));
  1839.     movieImportSubTypeIsFileExtension = 1 * (2**(12));
  1840.  
  1841.     kMovieImportExportOpenSelect = kComponentOpenSelect;
  1842.     kMovieImportExportCloseSelect = kComponentCloseSelect;
  1843.     kMovieImportExportCanDoSelect = kComponentCanDoSelect;
  1844.     kMovieImportExportVersionSelect = kComponentVersionSelect;
  1845.     kMovieImportHandleSelect    = 1;
  1846.     kMovieImportFileSelect        = 2;
  1847.     kMovieImportSetSampleDurationSelect = 3;
  1848.     kMovieImportSetSampleDescriptionSelect = 4;
  1849.     kMovieImportSetMediaFileSelect = 5;
  1850.     kMovieImportSetDimensionsSelect = 6;
  1851.     kMovieImportSetChunkSizeSelect = 7;
  1852.     kMovieImportSetProgressProcSelect = 8;
  1853.     kMovieImportSetAuxiliaryDataSelect = 9;
  1854.     kMovieImportSetFromScrapSelect = 10;
  1855.     kMovieImportDoUserDialogSelect = 11;
  1856.     kMovieImportSetDurationSelect = 12;
  1857.     kMovieImportGetAuxiliaryDataTypeSelect = 13;
  1858.     kMovieImportValidateSelect    = 14;
  1859.     kMovieImportGetFileTypeSelect = 15;
  1860.     kMovieExportToHandleSelect    = 128;
  1861.     kMovieExportToFileSelect    = 129;
  1862.     kMovieExportDoUserDialogSelectOBSOLETE = 130;
  1863.     kMovieExportGetAuxiliaryDataSelect = 131;
  1864.     kMovieExportSetProgressProcSelect = 132;
  1865.     kMovieExportSetSampleDescriptionSelect = 133;
  1866.     kMovieExportDoUserDialogSelect = 134;
  1867.     kMovieExportGetCreatorTypeSelect = 135;
  1868.  
  1869.     movieImportCreateTrack        = 1;
  1870.     movieImportInParallel        = 2;
  1871.     movieImportMustUseTrack        = 4;
  1872.  
  1873.     movieImportResultUsedMultipleTracks = 8;
  1874.  
  1875.  
  1876. FUNCTION MovieImportHandle(ci: MovieImportComponent; dataH: Handle; theMovie: Movie; targetTrack: Track; VAR usedTrack: Track; atTime: TimeValue; VAR addedDuration: TimeValue; inFlags: LONGINT; VAR outFlags: LONGINT): ComponentResult;
  1877.     {$IFC NOT GENERATINGCFM}
  1878.     INLINE $2F3C, $20, $1, $7000, $A82A;
  1879.     {$ENDC}
  1880. FUNCTION MovieImportFile(ci: MovieImportComponent; {CONST}VAR theFile: FSSpec; theMovie: Movie; targetTrack: Track; VAR usedTrack: Track; atTime: TimeValue; VAR addedDuration: TimeValue; inFlags: LONGINT; VAR outFlags: LONGINT): ComponentResult;
  1881.     {$IFC NOT GENERATINGCFM}
  1882.     INLINE $2F3C, $20, $2, $7000, $A82A;
  1883.     {$ENDC}
  1884. FUNCTION MovieImportSetSampleDuration(ci: MovieImportComponent; duration: TimeValue; scale: TimeScale): ComponentResult;
  1885.     {$IFC NOT GENERATINGCFM}
  1886.     INLINE $2F3C, $8, $3, $7000, $A82A;
  1887.     {$ENDC}
  1888. FUNCTION MovieImportSetSampleDescription(ci: MovieImportComponent; desc: SampleDescriptionHandle; mediaType: OSType): ComponentResult;
  1889.     {$IFC NOT GENERATINGCFM}
  1890.     INLINE $2F3C, $8, $4, $7000, $A82A;
  1891.     {$ENDC}
  1892. FUNCTION MovieImportSetMediaFile(ci: MovieImportComponent; alias: AliasHandle): ComponentResult;
  1893.     {$IFC NOT GENERATINGCFM}
  1894.     INLINE $2F3C, $4, $5, $7000, $A82A;
  1895.     {$ENDC}
  1896. FUNCTION MovieImportSetDimensions(ci: MovieImportComponent; width: Fixed; height: Fixed): ComponentResult;
  1897.     {$IFC NOT GENERATINGCFM}
  1898.     INLINE $2F3C, $8, $6, $7000, $A82A;
  1899.     {$ENDC}
  1900. FUNCTION MovieImportSetChunkSize(ci: MovieImportComponent; chunkSize: LONGINT): ComponentResult;
  1901.     {$IFC NOT GENERATINGCFM}
  1902.     INLINE $2F3C, $4, $7, $7000, $A82A;
  1903.     {$ENDC}
  1904. FUNCTION MovieImportSetProgressProc(ci: MovieImportComponent; proc: MovieProgressUPP; refcon: LONGINT): ComponentResult;
  1905.     {$IFC NOT GENERATINGCFM}
  1906.     INLINE $2F3C, $8, $8, $7000, $A82A;
  1907.     {$ENDC}
  1908. FUNCTION MovieImportSetAuxiliaryData(ci: MovieImportComponent; data: Handle; handleType: OSType): ComponentResult;
  1909.     {$IFC NOT GENERATINGCFM}
  1910.     INLINE $2F3C, $8, $9, $7000, $A82A;
  1911.     {$ENDC}
  1912. FUNCTION MovieImportSetFromScrap(ci: MovieImportComponent; fromScrap: BOOLEAN): ComponentResult;
  1913.     {$IFC NOT GENERATINGCFM}
  1914.     INLINE $2F3C, $2, $A, $7000, $A82A;
  1915.     {$ENDC}
  1916. FUNCTION MovieImportDoUserDialog(ci: MovieImportComponent; {CONST}VAR theFile: FSSpec; theData: Handle; VAR canceled: BOOLEAN): ComponentResult;
  1917.     {$IFC NOT GENERATINGCFM}
  1918.     INLINE $2F3C, $C, $B, $7000, $A82A;
  1919.     {$ENDC}
  1920. FUNCTION MovieImportSetDuration(ci: MovieImportComponent; duration: TimeValue): ComponentResult;
  1921.     {$IFC NOT GENERATINGCFM}
  1922.     INLINE $2F3C, $4, $C, $7000, $A82A;
  1923.     {$ENDC}
  1924. FUNCTION MovieImportGetAuxiliaryDataType(ci: MovieImportComponent; VAR auxType: OSType): ComponentResult;
  1925.     {$IFC NOT GENERATINGCFM}
  1926.     INLINE $2F3C, $4, $D, $7000, $A82A;
  1927.     {$ENDC}
  1928. FUNCTION MovieImportValidate(ci: MovieImportComponent; {CONST}VAR theFile: FSSpec; theData: Handle; VAR valid: BOOLEAN): ComponentResult;
  1929.     {$IFC NOT GENERATINGCFM}
  1930.     INLINE $2F3C, $C, $E, $7000, $A82A;
  1931.     {$ENDC}
  1932. FUNCTION MovieImportGetFileType(ci: MovieImportComponent; VAR fileType: OSType): ComponentResult;
  1933.     {$IFC NOT GENERATINGCFM}
  1934.     INLINE $2F3C, $4, $F, $7000, $A82A;
  1935.     {$ENDC}
  1936. FUNCTION MovieExportToHandle(ci: MovieExportComponent; dataH: Handle; theMovie: Movie; onlyThisTrack: Track; startTime: TimeValue; duration: TimeValue): ComponentResult;
  1937.     {$IFC NOT GENERATINGCFM}
  1938.     INLINE $2F3C, $14, $80, $7000, $A82A;
  1939.     {$ENDC}
  1940. FUNCTION MovieExportToFile(ci: MovieExportComponent; {CONST}VAR theFile: FSSpec; theMovie: Movie; onlyThisTrack: Track; startTime: TimeValue; duration: TimeValue): ComponentResult;
  1941.     {$IFC NOT GENERATINGCFM}
  1942.     INLINE $2F3C, $14, $81, $7000, $A82A;
  1943.     {$ENDC}
  1944. FUNCTION MovieExportGetAuxiliaryData(ci: MovieExportComponent; dataH: Handle; VAR handleType: OSType): ComponentResult;
  1945.     {$IFC NOT GENERATINGCFM}
  1946.     INLINE $2F3C, $8, $83, $7000, $A82A;
  1947.     {$ENDC}
  1948. FUNCTION MovieExportSetProgressProc(ci: MovieExportComponent; proc: MovieProgressUPP; refcon: LONGINT): ComponentResult;
  1949.     {$IFC NOT GENERATINGCFM}
  1950.     INLINE $2F3C, $8, $84, $7000, $A82A;
  1951.     {$ENDC}
  1952. FUNCTION MovieExportSetSampleDescription(ci: MovieExportComponent; desc: SampleDescriptionHandle; mediaType: OSType): ComponentResult;
  1953.     {$IFC NOT GENERATINGCFM}
  1954.     INLINE $2F3C, $8, $85, $7000, $A82A;
  1955.     {$ENDC}
  1956. FUNCTION MovieExportDoUserDialog(ci: MovieExportComponent; theMovie: Movie; onlyThisTrack: Track; startTime: TimeValue; duration: TimeValue; VAR canceled: BOOLEAN): ComponentResult;
  1957.     {$IFC NOT GENERATINGCFM}
  1958.     INLINE $2F3C, $14, $86, $7000, $A82A;
  1959.     {$ENDC}
  1960. FUNCTION MovieExportGetCreatorType(ci: MovieExportComponent; VAR creator: OSType): ComponentResult;
  1961.     {$IFC NOT GENERATINGCFM}
  1962.     INLINE $2F3C, $4, $87, $7000, $A82A;
  1963.     {$ENDC}
  1964. { Text Export Display Info data structure}
  1965.  
  1966. TYPE
  1967.     TextDisplayData = RECORD
  1968.         displayFlags:            LONGINT;
  1969.         textJustification:        LONGINT;
  1970.         bgColor:                RGBColor;
  1971.         textBox:                Rect;
  1972.         beginHilite:            INTEGER;
  1973.         endHilite:                INTEGER;
  1974.         hiliteColor:            RGBColor;
  1975.         doHiliteColor:            BOOLEAN;
  1976.         filler:                    SInt8;
  1977.         scrollDelayDur:            TimeValue;
  1978.         dropShadowOffset:        Point;
  1979.         dropShadowTransparency:    INTEGER;
  1980.     END;
  1981.     TextExportComponent = ComponentInstance;
  1982.  
  1983.  
  1984. FUNCTION TextExportGetDisplayData(ci: TextExportComponent; VAR textDisplay: TextDisplayData): ComponentResult;
  1985.     {$IFC NOT GENERATINGCFM}
  1986.     INLINE $2F3C, $4, $100, $7000, $A82A;
  1987.     {$ENDC}
  1988. {**************
  1989.  
  1990.     File Preview Components
  1991.  
  1992. **************}
  1993.     
  1994. TYPE
  1995.     pnotComponent = ComponentInstance;
  1996.  
  1997.  
  1998. CONST
  1999.     pnotComponentWantsEvents    = 1;
  2000.     pnotComponentNeedsNoCache    = 2;
  2001.  
  2002.     kPreviewOpenSelector        = 0;
  2003.     kPreviewCloseSelector        = -1;
  2004.     kPreviewCanDoSelector        = -2;
  2005.     kPreviewVersionSelector        = -3;
  2006.     kPreviewShowDataSelector    = 1;
  2007.     kPreviewMakePreviewSelector    = 2;
  2008.     kPreviewMakePreviewReferenceSelector = 3;
  2009.     kPreviewEventSelector        = 4;
  2010.  
  2011.     ShowFilePreviewComponentType = 'pnot';
  2012.     CreateFilePreviewComponentType = 'pmak';
  2013.  
  2014.  
  2015. FUNCTION PreviewShowData(p: pnotComponent; dataType: OSType; data: Handle; {CONST}VAR inHere: Rect): ComponentResult;
  2016.     {$IFC NOT GENERATINGCFM}
  2017.     INLINE $2F3C, $C, $1, $7000, $A82A;
  2018.     {$ENDC}
  2019. FUNCTION PreviewMakePreview(p: pnotComponent; VAR previewType: OSType; VAR previewResult: Handle; {CONST}VAR sourceFile: FSSpec; progress: ICMProgressProcRecordPtr): ComponentResult;
  2020.     {$IFC NOT GENERATINGCFM}
  2021.     INLINE $2F3C, $10, $2, $7000, $A82A;
  2022.     {$ENDC}
  2023. FUNCTION PreviewMakePreviewReference(p: pnotComponent; VAR previewType: OSType; VAR resID: INTEGER; {CONST}VAR sourceFile: FSSpec): ComponentResult;
  2024.     {$IFC NOT GENERATINGCFM}
  2025.     INLINE $2F3C, $C, $3, $7000, $A82A;
  2026.     {$ENDC}
  2027. FUNCTION PreviewEvent(p: pnotComponent; VAR e: EventRecord; VAR handledEvent: BOOLEAN): ComponentResult;
  2028.     {$IFC NOT GENERATINGCFM}
  2029.     INLINE $2F3C, $8, $4, $7000, $A82A;
  2030.     {$ENDC}
  2031. TYPE
  2032.     DataHCompletionProcPtr = ProcPtr;  { PROCEDURE DataHCompletion(request: Ptr; refcon: LONGINT; err: OSErr); }
  2033.     DataHCompletionUPP = UniversalProcPtr;
  2034.  
  2035.  
  2036. CONST
  2037.     kDataHCanRead                = 1 * (2**(0));
  2038.     kDataHSpecialRead            = 1 * (2**(1));
  2039.     kDataHSpecialReadFile        = 1 * (2**(2));
  2040.     kDataHCanWrite                = 1 * (2**(3));
  2041.     kDataHSpecialWrite            = 1 * (2**(4));
  2042.     kDataHSpecialWriteFile        = 1 * (2**(5));
  2043.     kDataHCanStreamingWrite        = 1 * (2**(6));
  2044.     kDataHMustCheckDataRef        = 1 * (2**(7));
  2045.  
  2046.  
  2047. TYPE
  2048.     DataHVolumeListRecord = RECORD
  2049.         vRefNum:                INTEGER;
  2050.         flags:                    LONGINT;
  2051.     END;
  2052.     DataHVolumeListPtr = ^DataHVolumeListRecord;
  2053.  
  2054.     DataHVolumeList = ^DataHVolumeListPtr;
  2055.  
  2056.  
  2057. CONST
  2058.     kDataHExtendedSchedule        = 'xtnd';
  2059.  
  2060.  
  2061. TYPE
  2062.     DataHScheduleRecord = RECORD
  2063.         timeNeededBy:            TimeRecord;
  2064.         extendedID:                LONGINT;                                { always is kDataHExtendedSchedule}
  2065.         extendedVers:            LONGINT;                                { always set to 0}
  2066.         priority:                Fixed;                                    { 100.0 or more means must have. lower numbers…}
  2067.     END;
  2068.     DataHSchedulePtr = ^DataHScheduleRecord;
  2069.  
  2070.  
  2071. FUNCTION DataHGetData(dh: DataHandler; h: Handle; hOffset: LONGINT; offset: LONGINT; size: LONGINT): ComponentResult;
  2072.     {$IFC NOT GENERATINGCFM}
  2073.     INLINE $2F3C, $10, $2, $7000, $A82A;
  2074.     {$ENDC}
  2075. FUNCTION DataHPutData(dh: DataHandler; h: Handle; hOffset: LONGINT; VAR offset: LONGINT; size: LONGINT): ComponentResult;
  2076.     {$IFC NOT GENERATINGCFM}
  2077.     INLINE $2F3C, $10, $3, $7000, $A82A;
  2078.     {$ENDC}
  2079. FUNCTION DataHFlushData(dh: DataHandler): ComponentResult;
  2080.     {$IFC NOT GENERATINGCFM}
  2081.     INLINE $2F3C, 0, $4, $7000, $A82A;
  2082.     {$ENDC}
  2083. FUNCTION DataHOpenForWrite(dh: DataHandler): ComponentResult;
  2084.     {$IFC NOT GENERATINGCFM}
  2085.     INLINE $2F3C, 0, $5, $7000, $A82A;
  2086.     {$ENDC}
  2087. FUNCTION DataHCloseForWrite(dh: DataHandler): ComponentResult;
  2088.     {$IFC NOT GENERATINGCFM}
  2089.     INLINE $2F3C, 0, $6, $7000, $A82A;
  2090.     {$ENDC}
  2091. FUNCTION DataHOpenForRead(dh: DataHandler): ComponentResult;
  2092.     {$IFC NOT GENERATINGCFM}
  2093.     INLINE $2F3C, 0, $8, $7000, $A82A;
  2094.     {$ENDC}
  2095. FUNCTION DataHCloseForRead(dh: DataHandler): ComponentResult;
  2096.     {$IFC NOT GENERATINGCFM}
  2097.     INLINE $2F3C, 0, $9, $7000, $A82A;
  2098.     {$ENDC}
  2099. FUNCTION DataHSetDataRef(dh: DataHandler; dataRef: Handle): ComponentResult;
  2100.     {$IFC NOT GENERATINGCFM}
  2101.     INLINE $2F3C, $4, $A, $7000, $A82A;
  2102.     {$ENDC}
  2103. FUNCTION DataHGetDataRef(dh: DataHandler; VAR dataRef: Handle): ComponentResult;
  2104.     {$IFC NOT GENERATINGCFM}
  2105.     INLINE $2F3C, $4, $B, $7000, $A82A;
  2106.     {$ENDC}
  2107. FUNCTION DataHCompareDataRef(dh: DataHandler; dataRef: Handle; VAR equal: BOOLEAN): ComponentResult;
  2108.     {$IFC NOT GENERATINGCFM}
  2109.     INLINE $2F3C, $8, $C, $7000, $A82A;
  2110.     {$ENDC}
  2111. FUNCTION DataHTask(dh: DataHandler): ComponentResult;
  2112.     {$IFC NOT GENERATINGCFM}
  2113.     INLINE $2F3C, 0, $D, $7000, $A82A;
  2114.     {$ENDC}
  2115. FUNCTION DataHScheduleData(dh: DataHandler; PlaceToPutDataPtr: Ptr; FileOffset: LONGINT; DataSize: LONGINT; RefCon: LONGINT; scheduleRec: DataHSchedulePtr; CompletionRtn: DataHCompletionUPP): ComponentResult;
  2116.     {$IFC NOT GENERATINGCFM}
  2117.     INLINE $2F3C, $18, $E, $7000, $A82A;
  2118.     {$ENDC}
  2119. FUNCTION DataHFinishData(dh: DataHandler; PlaceToPutDataPtr: Ptr; Cancel: BOOLEAN): ComponentResult;
  2120.     {$IFC NOT GENERATINGCFM}
  2121.     INLINE $2F3C, $6, $F, $7000, $A82A;
  2122.     {$ENDC}
  2123. FUNCTION DataHFlushCache(dh: DataHandler): ComponentResult;
  2124.     {$IFC NOT GENERATINGCFM}
  2125.     INLINE $2F3C, 0, $10, $7000, $A82A;
  2126.     {$ENDC}
  2127. FUNCTION DataHResolveDataRef(dh: DataHandler; theDataRef: Handle; VAR wasChanged: BOOLEAN; userInterfaceAllowed: BOOLEAN): ComponentResult;
  2128.     {$IFC NOT GENERATINGCFM}
  2129.     INLINE $2F3C, $A, $11, $7000, $A82A;
  2130.     {$ENDC}
  2131. FUNCTION DataHGetFileSize(dh: DataHandler; VAR fileSize: LONGINT): ComponentResult;
  2132.     {$IFC NOT GENERATINGCFM}
  2133.     INLINE $2F3C, $4, $12, $7000, $A82A;
  2134.     {$ENDC}
  2135. FUNCTION DataHCanUseDataRef(dh: DataHandler; dataRef: Handle; VAR useFlags: LONGINT): ComponentResult;
  2136.     {$IFC NOT GENERATINGCFM}
  2137.     INLINE $2F3C, $8, $13, $7000, $A82A;
  2138.     {$ENDC}
  2139. FUNCTION DataHGetVolumeList(dh: DataHandler; VAR volumeList: DataHVolumeList): ComponentResult;
  2140.     {$IFC NOT GENERATINGCFM}
  2141.     INLINE $2F3C, $4, $14, $7000, $A82A;
  2142.     {$ENDC}
  2143. FUNCTION DataHWrite(dh: DataHandler; data: Ptr; offset: LONGINT; size: LONGINT; completion: DataHCompletionUPP; refCon: LONGINT): ComponentResult;
  2144.     {$IFC NOT GENERATINGCFM}
  2145.     INLINE $2F3C, $14, $15, $7000, $A82A;
  2146.     {$ENDC}
  2147. FUNCTION DataHPreextend(dh: DataHandler; maxToAdd: LONGINT; VAR spaceAdded: LONGINT): ComponentResult;
  2148.     {$IFC NOT GENERATINGCFM}
  2149.     INLINE $2F3C, $8, $16, $7000, $A82A;
  2150.     {$ENDC}
  2151. FUNCTION DataHSetFileSize(dh: DataHandler; fileSize: LONGINT): ComponentResult;
  2152.     {$IFC NOT GENERATINGCFM}
  2153.     INLINE $2F3C, $4, $17, $7000, $A82A;
  2154.     {$ENDC}
  2155. FUNCTION DataHGetFreeSpace(dh: DataHandler; VAR freeSize: LONGINT): ComponentResult;
  2156.     {$IFC NOT GENERATINGCFM}
  2157.     INLINE $2F3C, $4, $18, $7000, $A82A;
  2158.     {$ENDC}
  2159. FUNCTION DataHCreateFile(dh: DataHandler; creator: OSType; deleteExisting: BOOLEAN): ComponentResult;
  2160.     {$IFC NOT GENERATINGCFM}
  2161.     INLINE $2F3C, $6, $19, $7000, $A82A;
  2162.     {$ENDC}
  2163. FUNCTION DataHGetPreferredBlockSize(dh: DataHandler; VAR blockSize: LONGINT): ComponentResult;
  2164.     {$IFC NOT GENERATINGCFM}
  2165.     INLINE $2F3C, $4, $1A, $7000, $A82A;
  2166.     {$ENDC}
  2167. FUNCTION DataHGetDeviceIndex(dh: DataHandler; VAR deviceIndex: LONGINT): ComponentResult;
  2168.     {$IFC NOT GENERATINGCFM}
  2169.     INLINE $2F3C, $4, $1B, $7000, $A82A;
  2170.     {$ENDC}
  2171. FUNCTION DataHIsStreamingDataHandler(dh: DataHandler; VAR yes: BOOLEAN): ComponentResult;
  2172.     {$IFC NOT GENERATINGCFM}
  2173.     INLINE $2F3C, $4, $1C, $7000, $A82A;
  2174.     {$ENDC}
  2175. FUNCTION DataHGetDataInBuffer(dh: DataHandler; startOffset: LONGINT; VAR size: LONGINT): ComponentResult;
  2176.     {$IFC NOT GENERATINGCFM}
  2177.     INLINE $2F3C, $8, $1D, $7000, $A82A;
  2178.     {$ENDC}
  2179. FUNCTION DataHGetScheduleAheadTime(dh: DataHandler; VAR millisecs: LONGINT): ComponentResult;
  2180.     {$IFC NOT GENERATINGCFM}
  2181.     INLINE $2F3C, $4, $1E, $7000, $A82A;
  2182.     {$ENDC}
  2183. FUNCTION DataHSetCacheSizeLimit(dh: DataHandler; cacheSizeLimit: Size): ComponentResult;
  2184.     {$IFC NOT GENERATINGCFM}
  2185.     INLINE $2F3C, $4, $1F, $7000, $A82A;
  2186.     {$ENDC}
  2187. FUNCTION DataHGetCacheSizeLimit(dh: DataHandler; VAR cacheSizeLimit: Size): ComponentResult;
  2188.     {$IFC NOT GENERATINGCFM}
  2189.     INLINE $2F3C, $4, $20, $7000, $A82A;
  2190.     {$ENDC}
  2191. FUNCTION DataHPlaybackHints(dh: DataHandler; flags: LONGINT; minFileOffset: LONGINT; maxFileOffset: LONGINT; bytesPerSecond: LONGINT): ComponentResult;
  2192.     {$IFC NOT GENERATINGCFM}
  2193.     INLINE $2F3C, $10, $103, $7000, $A82A;
  2194.     {$ENDC}
  2195.  
  2196. CONST
  2197.     kDataHGetDataSelect            = $2;
  2198.     kDataHPutDataSelect            = $3;
  2199.     kDataHFlushDataSelect        = $4;
  2200.     kDataHOpenForWriteSelect    = $5;
  2201.     kDataHCloseForWriteSelect    = $6;
  2202.     kDataHOpenForReadSelect        = $8;
  2203.     kDataHCloseForReadSelect    = $9;
  2204.     kDataHSetDataRefSelect        = $A;
  2205.     kDataHGetDataRefSelect        = $B;
  2206.     kDataHCompareDataRefSelect    = $C;
  2207.     kDataHTaskSelect            = $D;
  2208.     kDataHScheduleDataSelect    = $E;
  2209.     kDataHFinishDataSelect        = $F;
  2210.     kDataHFlushCacheSelect        = $10;
  2211.     kDataHResolveDataRefSelect    = $11;
  2212.     kDataHGetFileSizeSelect        = $12;
  2213.     kDataHCanUseDataRefSelect    = $13;
  2214.     kDataHGetVolumeListSelect    = $14;
  2215.     kDataHWriteSelect            = $15;
  2216.     kDataHPreextendSelect        = $16;
  2217.     kDataHSetFileSizeSelect        = $17;
  2218.     kDataHGetFreeSpaceSelect    = $18;
  2219.     kDataHCreateFileSelect        = $19;
  2220.     kDataHGetPreferredBlockSizeSelect = $1A;
  2221.     kDataHGetDeviceIndexSelect    = $1B;
  2222.     kDataHIsStreamingDataHandlerSelect = $1C;
  2223.     kDataHGetDataInBufferSelect    = $1D;
  2224.     kDataHGetScheduleAheadTimeSelect = $1E;
  2225.     kDataHSetCacheSizeLimitSelect = $1F;
  2226.     kDataHGetCacheSizeLimitSelect = $20;
  2227.     kDataHPlaybackHintsSelect    = $103;
  2228.  
  2229.     kMusicComponentType            = 'musi';
  2230.  
  2231.     
  2232. TYPE
  2233.     MusicComponent = ComponentInstance;
  2234.  
  2235. { MusicSynthesizerFlags}
  2236.  
  2237. CONST
  2238.     kSynthesizerDynamicVoice    = 1;                            { can reassign voices/channels (else, hogs all channels in mask }
  2239.     kSynthesizerUsesMIDIPort    = 2;                            { must be patched through MIDI Manager }
  2240.     kSynthesizerMicrotone        = 4;                            { can play microtonal scales }
  2241.     kSynthesizerLimitedMicrotone = 8;                            { can play microtones, but only on 1-voice parts }
  2242.     kSynthesizerMixedDrums        = 16;                            { any part can play drum parts, total = instrument parts }
  2243.     kSynthesizerSoftware        = 32;                            { implemented in main CPU software == uses cpu cycles }
  2244.     kSynthesizerGMSuperset        = 8192;
  2245.     kSynthesizerGM                = 16384;                        { synth is a GM device }
  2246.  
  2247. {
  2248.  * Note that these controller numbers
  2249.  * are _not_ identical to the MIDI controller numbers.
  2250.  * These are _signed_ 8.8 values, and the LSB's are
  2251.  * always sent to a MIDI device. Controllers 32-63 are
  2252.  * reserved (for MIDI, they are LSB's for 0-31, but we
  2253.  * always send both).
  2254.  *
  2255.  * The full range, therefore, is -128.00 to 127.7f.
  2256.  *
  2257.  * _Excepting_ _volume_, all controls default to zero.
  2258.  *
  2259.  * Pitch bend is specified in fractional semitones! No
  2260.  * more "pitch bend range" nonsense. You can bend as far
  2261.  * as you want, any time you want.
  2262.  }
  2263.     kControllerModulationWheel    = 1;
  2264.     kControllerBreath            = 2;
  2265.     kControllerFoot                = 4;
  2266.     kControllerPortamentoTime    = 5;
  2267.     kControllerVolume            = 7;
  2268.     kControllerBalance            = 8;
  2269.     kControllerPan                = 10;                            { 0 - "default", 1 - n: positioned in output 1-n (incl fractions) }
  2270.     kControllerExpression        = 11;
  2271.     kControllerPitchBend        = 32;                            { positive & negative semitones, with 7 bits fraction }
  2272.     kControllerAfterTouch        = 33;
  2273.     kControllerSustain            = 64;                            { boolean - positive for on, 0 or negative off }
  2274.     kControllerPortamento        = 65;                            { boolean }
  2275.     kControllerSostenuto        = 66;                            { boolean }
  2276.     kControllerSoftPedal        = 67;                            { boolean }
  2277.     kControllerReverb            = 91;
  2278.     kControllerTremolo            = 92;
  2279.     kControllerChorus            = 93;
  2280.     kControllerCeleste            = 94;
  2281.     kControllerPhaser            = 95;
  2282.  
  2283.     kControllerMaximum            = $7FFF;                        { +01111111.11111111 }
  2284.     kControllerMinimum            = $8000;                        { -10000000.00000000 }
  2285.  
  2286.  
  2287. TYPE
  2288.     SynthesizerDescription = RECORD
  2289.         synthesizerType:        OSType;                                    { synthesizer type (must be same as component subtype) }
  2290.         name:                    Str31;                                    { text name of synthesizer type }
  2291.         flags:                    LONGINT;                                { from the above enum }
  2292.         voiceCount:                LONGINT;                                { maximum polyphony }
  2293.         partCount:                LONGINT;                                { maximum multi-timbrality (and midi channels) }
  2294.         instrumentCount:        LONGINT;                                { non gm, built in (rom) instruments only }
  2295.         modifiableInstrumentCount: LONGINT;                                { plus n-more are user modifiable }
  2296.         channelMask:            LONGINT;                                { (midi device only) which channels device always uses }
  2297.         drumPartCount:            LONGINT;                                { maximum multi-timbrality of drum parts }
  2298.         drumCount:                LONGINT;                                { non gm, built in (rom) drumkits only }
  2299.         modifiableDrumCount:    LONGINT;                                { plus n-more are user modifiable }
  2300.         drumChannelMask:        LONGINT;                                { (midi device only) which channels device always uses }
  2301.         outputCount:            LONGINT;                                { number of audio outputs (usually two) }
  2302.         latency:                LONGINT;                                { response time in µSec }
  2303.         controllers:            ARRAY [0..3] OF LONGINT;                { array of 128 bits }
  2304.         gmInstruments:            ARRAY [0..3] OF LONGINT;                { array of 128 bits }
  2305.         gmDrums:                ARRAY [0..3] OF LONGINT;                { array of 128 bits }
  2306.     END;
  2307.  
  2308. CONST
  2309.     kVoiceCountDynamic            = -1;                            { constant to use to specify dynamic voicing }
  2310.  
  2311.  
  2312. TYPE
  2313.     ToneDescription = RECORD
  2314.         synthesizerType:        OSType;                                    { synthesizer type }
  2315.         synthesizerName:        Str31;                                    { name of instantiation of synth }
  2316.         instrumentName:            Str31;                                    { preferred name for human use }
  2317.         instrumentNumber:        LONGINT;                                { inst-number used if synth-name matches }
  2318.         gmNumber:                LONGINT;                                { Best matching general MIDI number }
  2319.     END;
  2320.  
  2321. CONST
  2322.     kFirstDrumkit                = 16384;                        { (first value is "no drum". instrument numbers from 16384->16384+128 are drumkits, and for GM they are _defined_ drumkits! }
  2323.     kLastDrumkit                = 0+(kFirstDrumkit + 128);
  2324.  
  2325. { InstrumentMatch}
  2326.     kInstrumentMatchSynthesizerType = 1;
  2327.     kInstrumentMatchSynthesizerName = 2;
  2328.     kInstrumentMatchName        = 4;
  2329.     kInstrumentMatchNumber        = 8;
  2330.     kInstrumentMatchGMNumber    = 16;
  2331.  
  2332. { KnobFlags}
  2333.     kKnobRealtime                = 1;                            { Knob can be changed interactively as part of a sequence (ie knob can be changed at interrupt time) }
  2334.     kKnobNextNote                = 2;                            { Knob only takes effect on the next note played }
  2335.     kKnobAction                    = 4;                            { setting the knob does something immediate }
  2336.     kKnobNotInstrument            = 8;                            { indicates that the knob isn't in the instrument handle }
  2337.     kKnobAffectsOthers            = 16;                            { other knobs will change value from this one }
  2338.     kKnobMinorGroupStart        = 64;                            { knob is first in some logical subgroup of knobs }
  2339.     kKnobGroupStart                = 128;                            { knob is first in some logical group of knobs }
  2340. { One of these may be used at a time. }
  2341.     kKnobTypeNumber                = 0 * (2**(12));
  2342.     kKnobTypeBoolean            = 1 * (2**(12));
  2343.     kKnobTypeNote                = 2 * (2**(12));
  2344.     kKnobTypePan                = 3 * (2**(12));
  2345.     kKnobTypeInstrument            = 4 * (2**(12));                { knob value = reference to another instrument number }
  2346.     kKnobTypeSetting            = 5 * (2**(12));                { knob value is 1 of n different things (eg, fm algorithms) }
  2347.  
  2348.     kUnknownKnobValue            = $7FFFFFFF;                    { a knob with this value means, we don't know it. }
  2349.  
  2350.  
  2351. TYPE
  2352.     KnobDescription = RECORD
  2353.         name:                    Str31;
  2354.         lowValue:                LONGINT;
  2355.         highValue:                LONGINT;
  2356.         defaultValue:            LONGINT;                                { a default instrument is made of all default values }
  2357.         flags:                    LONGINT;
  2358.     END;
  2359.     InstrumentData = RECORD
  2360.         tone:                    ToneDescription;
  2361.         knobCount:                LONGINT;
  2362.         knob:                    ARRAY [0..0] OF LONGINT;
  2363.     END;
  2364.     InstrumentDataPtr = ^InstrumentData;
  2365.     InstrumentDataHandle = ^InstrumentDataPtr;
  2366.  
  2367.     FlatInstrument = RECORD
  2368.         tone:                    ToneDescription;
  2369.         size:                    LONGINT;                                { size in bytes of the following data, including size field (excluding tonedescription) }
  2370.         data:                    PACKED ARRAY [0..3] OF SInt8;
  2371.     END;
  2372.     InstrumentAboutInfo = RECORD
  2373.         p:                        PicHandle;
  2374.         author:                    Str255;
  2375.         copyright:                Str255;
  2376.         other:                    Str255;
  2377.     END;
  2378.     MusicMIDIPacket = RECORD
  2379.         length:                    INTEGER;
  2380.         reserved:                LONGINT;
  2381.         data:                    PACKED ARRAY [0..248] OF SInt8;
  2382.     END;
  2383.     MusicMIDISendProcPtr = ProcPtr;  { FUNCTION MusicMIDISend(self: MusicComponent; refCon: LONGINT; VAR mmp: MusicMIDIPacket): ComponentResult; }
  2384.     MusicMIDISendUPP = UniversalProcPtr;
  2385.  
  2386.  
  2387. CONST
  2388.     kMusicFirstSelect            = 0;
  2389.     kMusicGetDescriptionSelect    = 1;
  2390.     kMusicGetPartSelect            = 2;
  2391.     kMusicSetPartSelect            = 3;
  2392.     kMusicSetInstrumentNumberSelect = 4;
  2393.     kMusicGetInstrumentNumberSelect = 5;
  2394.     kMusicStoreInstrumentSelect    = 6;
  2395.     kMusicGetInstrumentSelect    = 7;
  2396.     kMusicSetInstrumentSelect    = 8;
  2397.     kMusicDummyOne                = 9;
  2398.     kMusicDummyTwo                = 10;
  2399.     kMusicDummyThree            = 11;
  2400.     kMusicDummyFour                = 12;
  2401.     kMusicGetInstrumentKnobDescriptionSelect = 13;
  2402.     kMusicGetDrumKnobDescriptionSelect = 14;
  2403.     kMusicGetKnobDescriptionSelect = 15;
  2404.     kMusicGetPartKnobSelect        = 16;
  2405.     kMusicSetPartKnobSelect        = 17;
  2406.     kMusicGetKnobSelect            = 18;
  2407.     kMusicSetKnobSelect            = 19;
  2408.     kMusicGetPartNameSelect        = 20;
  2409.     kMusicSetPartNameSelect        = 21;
  2410.     kMusicFindToneSelect        = 22;
  2411.     kMusicPlayNoteSelect        = 23;
  2412.     kMusicResetPartSelect        = 24;
  2413.     kMusicSetControllerSelect    = 25;
  2414.     kMusicGetControllerSelect    = 26;
  2415.     kMusicGetMIDIProcSelect        = 27;
  2416.     kMusicSetMIDIProcSelect        = 28;
  2417.     kMusicGetInstrumentNamesSelect = 29;
  2418.     kMusicGetDrumNamesSelect    = 30;
  2419.     kMusicGetMasterTuneSelect    = 31;
  2420.     kMusicSetMasterTuneSelect    = 32;
  2421.     kMusicSetFlatInstrumentSelect = 33;
  2422.     kMusicGetInstrumentAboutInfoSelect = 34;
  2423.  
  2424.     notImplementedMusicErr        = 0+($80000000 + ((-2100 - 1)));
  2425.     cantSendToSynthesizerErr    = 0+($80000000 + ((-2100 - 2)));
  2426.     cantReceiveFromSynthesizerErr = 0+($80000000 + ((-2100 - 3)));
  2427.     illegalVoiceAllocationErr    = 0+($80000000 + ((-2100 - 4)));
  2428.     illegalPartErr                = 0+($80000000 + ((-2100 - 5)));
  2429.     illegalChannelErr            = 0+($80000000 + ((-2100 - 6)));
  2430.     illegalKnobErr                = 0+($80000000 + ((-2100 - 7)));
  2431.     illegalKnobValueErr            = 0+($80000000 + ((-2100 - 8)));
  2432.     illegalInstrumentErr        = 0+($80000000 + ((-2100 - 9)));
  2433.     illegalControllerErr        = 0+($80000000 + ((-2100 - 10)));
  2434.     midiManagerAbsentErr        = 0+($80000000 + ((-2100 - 11)));
  2435.     synthesizerNotRespondingErr    = 0+($80000000 + ((-2100 - 12)));
  2436.     synthesizerErr                = 0+($80000000 + ((-2100 - 13)));
  2437.     illegalNoteChannelErr        = 0+($80000000 + ((-2100 - 14)));
  2438.     noteChannelNotAllocatedErr    = 0+($80000000 + ((-2100 - 15)));
  2439.     tunePlayerFullErr            = 0+($80000000 + ((-2100 - 16)));
  2440.     tuneParseErr                = 0+($80000000 + ((-2100 - 17)));
  2441.  
  2442.     kGMType                        = 'gm  ';
  2443.  
  2444. {-----------------------------------------
  2445.     Capabilities and Voice Allocation
  2446. -----------------------------------------}
  2447.  
  2448. FUNCTION MusicGetPart(mc: MusicComponent; part: LONGINT; VAR midiChannel: LONGINT; VAR polyphony: LONGINT): ComponentResult;
  2449.     {$IFC NOT GENERATINGCFM}
  2450.     INLINE $2F3C, $C, $2, $7000, $A82A;
  2451.     {$ENDC}
  2452. FUNCTION MusicSetPart(mc: MusicComponent; part: LONGINT; midiChannel: LONGINT; polyphony: LONGINT): ComponentResult;
  2453.     {$IFC NOT GENERATINGCFM}
  2454.     INLINE $2F3C, $C, $3, $7000, $A82A;
  2455.     {$ENDC}
  2456. FUNCTION MusicGetDescription(mc: MusicComponent; VAR sd: SynthesizerDescription): ComponentResult;
  2457.     {$IFC NOT GENERATINGCFM}
  2458.     INLINE $2F3C, $4, $1, $7000, $A82A;
  2459.     {$ENDC}
  2460. FUNCTION MusicGetInstrumentAboutInfo(mc: MusicComponent; part: LONGINT; VAR iai: InstrumentAboutInfo): ComponentResult;
  2461.     {$IFC NOT GENERATINGCFM}
  2462.     INLINE $2F3C, $8, $22, $7000, $A82A;
  2463.     {$ENDC}
  2464. {-----------------------------------------
  2465.     Instrument Loading and Storing
  2466. -----------------------------------------}
  2467. FUNCTION MusicSetInstrumentNumber(mc: MusicComponent; part: LONGINT; instrumentNumber: LONGINT): ComponentResult;
  2468.     {$IFC NOT GENERATINGCFM}
  2469.     INLINE $2F3C, $8, $4, $7000, $A82A;
  2470.     {$ENDC}
  2471. FUNCTION MusicGetInstrumentNumber(mc: MusicComponent; part: LONGINT): ComponentResult;
  2472.     {$IFC NOT GENERATINGCFM}
  2473.     INLINE $2F3C, $4, $5, $7000, $A82A;
  2474.     {$ENDC}
  2475. FUNCTION MusicStoreInstrument(mc: MusicComponent; part: LONGINT; instrumentNumber: LONGINT): ComponentResult;
  2476.     {$IFC NOT GENERATINGCFM}
  2477.     INLINE $2F3C, $8, $6, $7000, $A82A;
  2478.     {$ENDC}
  2479. FUNCTION MusicGetInstrument(mc: MusicComponent; part: LONGINT; VAR iH: InstrumentDataHandle): ComponentResult;
  2480.     {$IFC NOT GENERATINGCFM}
  2481.     INLINE $2F3C, $8, $7, $7000, $A82A;
  2482.     {$ENDC}
  2483. FUNCTION MusicSetInstrument(mc: MusicComponent; part: LONGINT; iH: InstrumentDataHandle): ComponentResult;
  2484.     {$IFC NOT GENERATINGCFM}
  2485.     INLINE $2F3C, $8, $8, $7000, $A82A;
  2486.     {$ENDC}
  2487. FUNCTION MusicSetFlatInstrument(mc: MusicComponent; part: LONGINT; VAR flatInstrument: FlatInstrument): ComponentResult;
  2488.     {$IFC NOT GENERATINGCFM}
  2489.     INLINE $2F3C, $8, $21, $7000, $A82A;
  2490.     {$ENDC}
  2491. {-----------------------------------------
  2492.     Instrument Knobs
  2493. -----------------------------------------}
  2494. FUNCTION MusicGetInstrumentKnobDescription(mc: MusicComponent; knobNumber: LONGINT; VAR mkd: KnobDescription): ComponentResult;
  2495.     {$IFC NOT GENERATINGCFM}
  2496.     INLINE $2F3C, $8, $D, $7000, $A82A;
  2497.     {$ENDC}
  2498. FUNCTION MusicGetDrumKnobDescription(mc: MusicComponent; knobNumber: LONGINT; VAR mkd: KnobDescription): ComponentResult;
  2499.     {$IFC NOT GENERATINGCFM}
  2500.     INLINE $2F3C, $8, $E, $7000, $A82A;
  2501.     {$ENDC}
  2502. FUNCTION MusicGetPartKnob(mc: MusicComponent; part: LONGINT; knobNumber: LONGINT): ComponentResult;
  2503.     {$IFC NOT GENERATINGCFM}
  2504.     INLINE $2F3C, $8, $10, $7000, $A82A;
  2505.     {$ENDC}
  2506. FUNCTION MusicSetPartKnob(mc: MusicComponent; part: LONGINT; knobNumber: LONGINT; knobValue: LONGINT): ComponentResult;
  2507.     {$IFC NOT GENERATINGCFM}
  2508.     INLINE $2F3C, $C, $11, $7000, $A82A;
  2509.     {$ENDC}
  2510. {-----------------------------------------
  2511.     Synthesizer Knobs
  2512. -----------------------------------------}
  2513. FUNCTION MusicGetKnobDescription(mc: MusicComponent; knobNumber: LONGINT; VAR mkd: KnobDescription): ComponentResult;
  2514.     {$IFC NOT GENERATINGCFM}
  2515.     INLINE $2F3C, $8, $F, $7000, $A82A;
  2516.     {$ENDC}
  2517. FUNCTION MusicGetKnob(mc: MusicComponent; knobNumber: LONGINT): ComponentResult;
  2518.     {$IFC NOT GENERATINGCFM}
  2519.     INLINE $2F3C, $4, $12, $7000, $A82A;
  2520.     {$ENDC}
  2521. FUNCTION MusicSetKnob(mc: MusicComponent; knobNumber: LONGINT; knobValue: LONGINT): ComponentResult;
  2522.     {$IFC NOT GENERATINGCFM}
  2523.     INLINE $2F3C, $8, $13, $7000, $A82A;
  2524.     {$ENDC}
  2525. FUNCTION MusicSetMasterTune(mc: MusicComponent; masterTune: Fixed): ComponentResult;
  2526.     {$IFC NOT GENERATINGCFM}
  2527.     INLINE $2F3C, $4, $20, $7000, $A82A;
  2528.     {$ENDC}
  2529. FUNCTION MusicGetMasterTune(mc: MusicComponent): ComponentResult;
  2530.     {$IFC NOT GENERATINGCFM}
  2531.     INLINE $2F3C, 0, $1F, $7000, $A82A;
  2532.     {$ENDC}
  2533. {-----------------------------------------
  2534.     Names of Instruments
  2535. -----------------------------------------}
  2536. FUNCTION MusicGetPartName(mc: MusicComponent; part: LONGINT; VAR name: Str31): ComponentResult;
  2537.     {$IFC NOT GENERATINGCFM}
  2538.     INLINE $2F3C, $8, $14, $7000, $A82A;
  2539.     {$ENDC}
  2540. FUNCTION MusicSetPartName(mc: MusicComponent; part: LONGINT; VAR name: Str31): ComponentResult;
  2541.     {$IFC NOT GENERATINGCFM}
  2542.     INLINE $2F3C, $8, $15, $7000, $A82A;
  2543.     {$ENDC}
  2544. FUNCTION MusicFindTone(mc: MusicComponent; VAR td: ToneDescription; VAR instrumentNumber: LONGINT; VAR fit: LONGINT): ComponentResult;
  2545.     {$IFC NOT GENERATINGCFM}
  2546.     INLINE $2F3C, $C, $16, $7000, $A82A;
  2547.     {$ENDC}
  2548. FUNCTION MusicGetInstrumentNames(mc: MusicComponent; modifiableInstruments: LONGINT; VAR instrumentNames: Handle; VAR instrumentCategoryLasts: Handle; VAR instrumentCategoryNames: Handle): ComponentResult;
  2549.     {$IFC NOT GENERATINGCFM}
  2550.     INLINE $2F3C, $10, $1D, $7000, $A82A;
  2551.     {$ENDC}
  2552. FUNCTION MusicGetDrumNames(mc: MusicComponent; modifiableInstruments: LONGINT; VAR instrumentNumbers: Handle; VAR instrumentNames: Handle): ComponentResult;
  2553.     {$IFC NOT GENERATINGCFM}
  2554.     INLINE $2F3C, $C, $1E, $7000, $A82A;
  2555.     {$ENDC}
  2556. {-----------------------------------------
  2557.     Realtime Actions
  2558. -----------------------------------------}
  2559. FUNCTION MusicPlayNote(mc: MusicComponent; part: LONGINT; pitch: LONGINT; velocity: LONGINT): ComponentResult;
  2560.     {$IFC NOT GENERATINGCFM}
  2561.     INLINE $2F3C, $C, $17, $7000, $A82A;
  2562.     {$ENDC}
  2563. FUNCTION MusicResetPart(mc: MusicComponent; part: LONGINT): ComponentResult;
  2564.     {$IFC NOT GENERATINGCFM}
  2565.     INLINE $2F3C, $4, $18, $7000, $A82A;
  2566.     {$ENDC}
  2567. FUNCTION MusicSetController(mc: MusicComponent; part: LONGINT; controllerNumber: LONGINT; controllerValue: LONGINT): ComponentResult;
  2568.     {$IFC NOT GENERATINGCFM}
  2569.     INLINE $2F3C, $C, $19, $7000, $A82A;
  2570.     {$ENDC}
  2571. FUNCTION MusicGetController(mc: MusicComponent; part: LONGINT; controllerNumber: LONGINT): ComponentResult;
  2572.     {$IFC NOT GENERATINGCFM}
  2573.     INLINE $2F3C, $8, $1A, $7000, $A82A;
  2574.     {$ENDC}
  2575. {-----------------------------------------
  2576.     Finding the Hardware
  2577. -----------------------------------------}
  2578. FUNCTION MusicGetMIDIProc(mc: MusicComponent; VAR midiSendProc: MusicMIDISendUPP; VAR refCon: LONGINT): ComponentResult;
  2579.     {$IFC NOT GENERATINGCFM}
  2580.     INLINE $2F3C, $8, $1B, $7000, $A82A;
  2581.     {$ENDC}
  2582. FUNCTION MusicSetMIDIProc(mc: MusicComponent; midiSendProc: MusicMIDISendUPP; refCon: LONGINT): ComponentResult;
  2583.     {$IFC NOT GENERATINGCFM}
  2584.     INLINE $2F3C, $8, $1C, $7000, $A82A;
  2585.     {$ENDC}
  2586. {--------------------------
  2587.     Types
  2588. --------------------------}
  2589.     
  2590. TYPE
  2591.     NoteChannel = Ptr;
  2592.  
  2593.     SynthesizerConnections = RECORD
  2594.         clientID:                OSType;
  2595.         inputPortID:            OSType;
  2596.         outputPortID:            OSType;
  2597.         midiChannel:            LONGINT;                                { The system channel; others are configurable (or the nubus slot number) }
  2598.         flags:                    LONGINT;
  2599.         reserved:                ARRAY [0..2] OF LONGINT;                { should be zero }
  2600.     END;
  2601.     NoteRequest = RECORD
  2602.         polyphony:                LONGINT;                                { Maximum number of voices }
  2603.         typicalPolyphony:        Fixed;                                    { Hint for level mixing }
  2604.         tone:                    ToneDescription;
  2605.     END;
  2606.  
  2607. CONST
  2608.     kNAFirstSelector            = -7;
  2609.     kNATargetSelect                = -6;
  2610.     kNARegisterSelect            = -5;
  2611.     kNAVersionSelect            = -4;
  2612.     kNACanDoSelect                = -3;
  2613.     kNACloseSelect                = -2;
  2614.     kNAOpenSelect                = -1;
  2615.     kNARegisterMusicDeviceSelect = 0;
  2616.     kNAUnregisterMusicDeviceSelect = 1;
  2617.     kNAGetRegisteredMusicDeviceSelect = 2;
  2618.     kNASaveMusicConfigurationSelect = 3;
  2619.     kNANewNoteChannelSelect        = 4;
  2620.     kNADisposeNoteChannelSelect    = 5;
  2621.     kNAGetNoteChannelInfoSelect    = 6;
  2622.     kNAPrerollNoteChannelSelect    = 7;
  2623.     kNAUnrollNoteChannelSelect    = 8;
  2624.     kNAEngageNoteChannelSelect    = 9;
  2625.     kNADisengageNoteChannelSelect = 10;
  2626.     kNASetNoteChannelVolumeSelect = 11;
  2627.     kNAResetNoteChannelSelect    = 12;
  2628.     kNAPlayNoteSelect            = 13;
  2629.     kNASetControllerSelect        = 14;
  2630.     kNASetKnobSelect            = 15;
  2631.     kNAFindNoteChannelToneSelect = 16;
  2632.     kNASetNoteChannelInstrumentSelect = 17;
  2633.     kNAPickInstrumentSelect        = 18;
  2634.     kNAPickArrangementSelect    = 19;
  2635.     kNAGetStatusBlockSelect        = 20;
  2636.     kNASetDefaultMIDIInputSelect = 21;
  2637.     kNAGetDefaultMIDIInputSelect = 22;
  2638.     kNAGetNoteChannelStateSelect = 23;
  2639.     kNASetNoteChannelStateSelect = 24;
  2640.     kNAUseDefaultMIDIInputSelect = 25;
  2641.     kNALoseDefaultMIDIInputSelect = 26;
  2642.     kNAStuffToneDescriptionSelect = 27;
  2643.     kNACopyrightDialogSelect    = 28;
  2644.     kNASetFlatInstrumentSelect    = 29;
  2645.     kNASetInstrumentSelect        = 30;
  2646.     kNALastSelector                = 31;
  2647.  
  2648.     
  2649. TYPE
  2650.     NoteAllocator = ComponentInstance;
  2651.  
  2652.  
  2653. CONST
  2654.     kPickDontMix                = 1;                            { dont mix instruments with drum sounds }
  2655.     kPickSameSynth                = 2;                            { only allow the same device that went in, to come out }
  2656.  
  2657. TYPE
  2658.     MusicMIDIReadHookProcPtr = ProcPtr;  { FUNCTION MusicMIDIReadHook(VAR mp: MusicMIDIPacket; myRefCon: LONGINT): ComponentResult; }
  2659.     MusicMIDIReadHookUPP = UniversalProcPtr;
  2660.  
  2661.  
  2662. CONST
  2663.     kNoteAllocatorType            = 'nota';
  2664.  
  2665. {--------------------------------
  2666.     Note Allocator Prototypes
  2667. --------------------------------}
  2668. {
  2669.  * System Configuration
  2670.  }
  2671.  
  2672. FUNCTION NARegisterMusicDevice(na: NoteAllocator; synthType: OSType; VAR name: Str31; VAR connections: SynthesizerConnections): ComponentResult;
  2673.     {$IFC NOT GENERATINGCFM}
  2674.     INLINE $2F3C, $C, 0, $7000, $A82A;
  2675.     {$ENDC}
  2676. FUNCTION NAUnregisterMusicDevice(na: NoteAllocator; index: LONGINT): ComponentResult;
  2677.     {$IFC NOT GENERATINGCFM}
  2678.     INLINE $2F3C, $4, $1, $7000, $A82A;
  2679.     {$ENDC}
  2680. FUNCTION NAGetRegisteredMusicDevice(na: NoteAllocator; index: LONGINT; VAR synthType: OSType; VAR name: Str31; VAR connections: SynthesizerConnections; VAR mc: MusicComponent): ComponentResult;
  2681.     {$IFC NOT GENERATINGCFM}
  2682.     INLINE $2F3C, $14, $2, $7000, $A82A;
  2683.     {$ENDC}
  2684. FUNCTION NASetDefaultMIDIInput(na: NoteAllocator; VAR sc: SynthesizerConnections): ComponentResult;
  2685.     {$IFC NOT GENERATINGCFM}
  2686.     INLINE $2F3C, $4, $15, $7000, $A82A;
  2687.     {$ENDC}
  2688. FUNCTION NAGetDefaultMIDIInput(na: NoteAllocator; VAR sc: SynthesizerConnections): ComponentResult;
  2689.     {$IFC NOT GENERATINGCFM}
  2690.     INLINE $2F3C, $4, $16, $7000, $A82A;
  2691.     {$ENDC}
  2692. FUNCTION NASaveMusicConfiguration(na: NoteAllocator): ComponentResult;
  2693.     {$IFC NOT GENERATINGCFM}
  2694.     INLINE $2F3C, 0, $3, $7000, $A82A;
  2695.     {$ENDC}
  2696. {
  2697.  * Allocation
  2698.  }
  2699. FUNCTION NANewNoteChannel(na: NoteAllocator; VAR noteRequest: NoteRequest; VAR outChannel: NoteChannel): ComponentResult;
  2700.     {$IFC NOT GENERATINGCFM}
  2701.     INLINE $2F3C, $8, $4, $7000, $A82A;
  2702.     {$ENDC}
  2703. FUNCTION NADisposeNoteChannel(na: NoteAllocator; noteChannel: NoteChannel): ComponentResult;
  2704.     {$IFC NOT GENERATINGCFM}
  2705.     INLINE $2F3C, $4, $5, $7000, $A82A;
  2706.     {$ENDC}
  2707. FUNCTION NAGetNoteChannelInfo(na: NoteAllocator; noteChannel: NoteChannel; VAR index: LONGINT; VAR part: LONGINT): ComponentResult;
  2708.     {$IFC NOT GENERATINGCFM}
  2709.     INLINE $2F3C, $C, $6, $7000, $A82A;
  2710.     {$ENDC}
  2711. FUNCTION NAUseDefaultMIDIInput(na: NoteAllocator; readHook: MusicMIDIReadHookUPP; refCon: LONGINT; flags: LONGINT): ComponentResult;
  2712.     {$IFC NOT GENERATINGCFM}
  2713.     INLINE $2F3C, $C, $19, $7000, $A82A;
  2714.     {$ENDC}
  2715. FUNCTION NALoseDefaultMIDIInput(na: NoteAllocator): ComponentResult;
  2716.     {$IFC NOT GENERATINGCFM}
  2717.     INLINE $2F3C, 0, $1A, $7000, $A82A;
  2718.     {$ENDC}
  2719. {
  2720.  * Setup
  2721.  }
  2722. FUNCTION NAPrerollNoteChannel(na: NoteAllocator; noteChannel: NoteChannel): ComponentResult;
  2723.     {$IFC NOT GENERATINGCFM}
  2724.     INLINE $2F3C, $4, $7, $7000, $A82A;
  2725.     {$ENDC}
  2726. FUNCTION NAUnrollNoteChannel(na: NoteAllocator; noteChannel: NoteChannel): ComponentResult;
  2727.     {$IFC NOT GENERATINGCFM}
  2728.     INLINE $2F3C, $4, $8, $7000, $A82A;
  2729.     {$ENDC}
  2730. FUNCTION NAEngageNoteChannel(na: NoteAllocator; noteChannel: NoteChannel): ComponentResult;
  2731.     {$IFC NOT GENERATINGCFM}
  2732.     INLINE $2F3C, $4, $9, $7000, $A82A;
  2733.     {$ENDC}
  2734. FUNCTION NADisengageNoteChannel(na: NoteAllocator; noteChannel: NoteChannel; silenceNotes: LONGINT): ComponentResult;
  2735.     {$IFC NOT GENERATINGCFM}
  2736.     INLINE $2F3C, $8, $A, $7000, $A82A;
  2737.     {$ENDC}
  2738. FUNCTION NAGetNoteChannelState(na: NoteAllocator; noteChannel: NoteChannel; instrumentNumber: LONGINT; VAR state: Handle): ComponentResult;
  2739.     {$IFC NOT GENERATINGCFM}
  2740.     INLINE $2F3C, $C, $17, $7000, $A82A;
  2741.     {$ENDC}
  2742. FUNCTION NASetNoteChannelState(na: NoteAllocator; noteChannel: NoteChannel; instrumentNumber: LONGINT; state: Handle): ComponentResult;
  2743.     {$IFC NOT GENERATINGCFM}
  2744.     INLINE $2F3C, $C, $18, $7000, $A82A;
  2745.     {$ENDC}
  2746. FUNCTION NAResetNoteChannel(na: NoteAllocator; noteChannel: NoteChannel): ComponentResult;
  2747.     {$IFC NOT GENERATINGCFM}
  2748.     INLINE $2F3C, $4, $C, $7000, $A82A;
  2749.     {$ENDC}
  2750. FUNCTION NASetNoteChannelVolume(na: NoteAllocator; noteChannel: NoteChannel; volume: Fixed): ComponentResult;
  2751.     {$IFC NOT GENERATINGCFM}
  2752.     INLINE $2F3C, $8, $B, $7000, $A82A;
  2753.     {$ENDC}
  2754. FUNCTION NASetInstrument(na: NoteAllocator; noteChannel: NoteChannel; VAR instrumentData: InstrumentData): ComponentResult;
  2755.     {$IFC NOT GENERATINGCFM}
  2756.     INLINE $2F3C, $8, $1E, $7000, $A82A;
  2757.     {$ENDC}
  2758. FUNCTION NASetFlatInstrument(na: NoteAllocator; noteChannel: NoteChannel; VAR flatInstrument: FlatInstrument): ComponentResult;
  2759.     {$IFC NOT GENERATINGCFM}
  2760.     INLINE $2F3C, $8, $1D, $7000, $A82A;
  2761.     {$ENDC}
  2762. {
  2763.  * Control
  2764.  }
  2765. FUNCTION NAPlayNote(na: NoteAllocator; noteChannel: NoteChannel; pitch: LONGINT; velocity: LONGINT): ComponentResult;
  2766.     {$IFC NOT GENERATINGCFM}
  2767.     INLINE $2F3C, $C, $D, $7000, $A82A;
  2768.     {$ENDC}
  2769. FUNCTION NASetController(na: NoteAllocator; noteChannel: NoteChannel; controllerNumber: LONGINT; controllerValue: LONGINT): ComponentResult;
  2770.     {$IFC NOT GENERATINGCFM}
  2771.     INLINE $2F3C, $C, $E, $7000, $A82A;
  2772.     {$ENDC}
  2773. FUNCTION NASetKnob(na: NoteAllocator; noteChannel: NoteChannel; knobNumber: LONGINT; knobValue: LONGINT): ComponentResult;
  2774.     {$IFC NOT GENERATINGCFM}
  2775.     INLINE $2F3C, $C, $F, $7000, $A82A;
  2776.     {$ENDC}
  2777. FUNCTION NAFindNoteChannelTone(na: NoteAllocator; noteChannel: NoteChannel; VAR td: ToneDescription; VAR instrumentNumber: LONGINT): ComponentResult;
  2778.     {$IFC NOT GENERATINGCFM}
  2779.     INLINE $2F3C, $C, $10, $7000, $A82A;
  2780.     {$ENDC}
  2781. FUNCTION NASetNoteChannelInstrument(na: NoteAllocator; noteChannel: NoteChannel; instrumentNumber: LONGINT): ComponentResult;
  2782.     {$IFC NOT GENERATINGCFM}
  2783.     INLINE $2F3C, $8, $11, $7000, $A82A;
  2784.     {$ENDC}
  2785. {
  2786.  * User Interface
  2787.  }
  2788. FUNCTION NAPickInstrument(na: NoteAllocator; filterProc: ModalFilterUPP; prompt: StringPtr; VAR sd: ToneDescription; flags: LONGINT; refCon: LONGINT; VAR flatList: Ptr; VAR flatChoiceIndex: LONGINT): ComponentResult;
  2789.     {$IFC NOT GENERATINGCFM}
  2790.     INLINE $2F3C, $1C, $12, $7000, $A82A;
  2791.     {$ENDC}
  2792. FUNCTION NAStuffToneDescription(na: NoteAllocator; gmNumber: LONGINT; VAR td: ToneDescription): ComponentResult;
  2793.     {$IFC NOT GENERATINGCFM}
  2794.     INLINE $2F3C, $8, $1B, $7000, $A82A;
  2795.     {$ENDC}
  2796. FUNCTION NAPickArrangement(na: NoteAllocator; filterProc: ModalFilterUPP; prompt: StringPtr; partCount: LONGINT; VAR noteRequestList: NoteRequest; t: Track; songName: StringPtr): ComponentResult;
  2797.     {$IFC NOT GENERATINGCFM}
  2798.     INLINE $2F3C, $18, $13, $7000, $A82A;
  2799.     {$ENDC}
  2800. FUNCTION NACopyrightDialog(na: NoteAllocator; p: PicHandle; author: StringPtr; copyright: StringPtr; other: StringPtr; title: StringPtr; filterProc: ModalFilterUPP; refCon: LONGINT): ComponentResult;
  2801.     {$IFC NOT GENERATINGCFM}
  2802.     INLINE $2F3C, $1C, $1C, $7000, $A82A;
  2803.     {$ENDC}
  2804. {
  2805.  * Note Allocator interior views
  2806.  }
  2807.  
  2808. TYPE
  2809.     NAStatPiece = RECORD
  2810.         clientName:                Str31;
  2811.         synthesizerName:        Str31;
  2812.         part:                    LONGINT;
  2813.         midiChannel:            LONGINT;
  2814.         polyphony:                LONGINT;
  2815.         valid:                    LONGINT;
  2816.     END;
  2817.     NAStat = RECORD
  2818.         pieceCount:                LONGINT;
  2819.         piece:                    ARRAY [0..63] OF NAStatPiece;
  2820.     END;
  2821.  
  2822. FUNCTION NAGetStatusBlock(na: NoteAllocator; VAR stat: NAStat): ComponentResult;
  2823.     {$IFC NOT GENERATINGCFM}
  2824.     INLINE $2F3C, $4, $14, $7000, $A82A;
  2825.     {$ENDC}
  2826. {--------------------------
  2827.     Types
  2828. --------------------------}
  2829.  
  2830. CONST
  2831.     kTuneQueueDepth                = 8;                            { Deepest you can queue tune segments }
  2832.  
  2833.  
  2834. TYPE
  2835.     TuneStatus = RECORD
  2836.         tune:                    ^LONGINT;                                { currently playing tune }
  2837.         tunePtr:                ^LONGINT;                                { position within currently playing piece }
  2838.         time:                    TimeValue;                                { current tune time }
  2839.         queueCount:                INTEGER;                                { how many pieces queued up? }
  2840.         queueSpots:                INTEGER;                                { How many more tunepieces can be queued }
  2841.         queueTime:                TimeValue;                                { How much time is queued up? (can be very inaccurate) }
  2842.         reserved:                ARRAY [0..2] OF LONGINT;
  2843.     END;
  2844.  
  2845. CONST
  2846.     kStopTuneFade                = 1;                            { do a quick, synchronous fadeout }
  2847.     kStopTuneSustain            = 2;                            { don't silece notes }
  2848.     kStopTuneInstant            = 4;                            { silence notes fast (else, decay them) }
  2849.     kStopTuneReleaseChannels    = 8;                            { afterwards, let the channels go }
  2850.  
  2851.     kTuneSelect                    = 3;
  2852.     kTuneSetHeaderSelect        = 4;
  2853.     kTuneGetTimeBaseSelect        = 5;
  2854.     kTuneSetTimeScaleSelect        = 6;
  2855.     kTuneGetTimeScaleSelect        = 7;
  2856.     kTuneGetIndexedNoteChannelSelect = 8;
  2857.     kTuneDummy                    = 9;
  2858.     kTuneQueueSelect            = 10;
  2859.     kTuneInstantSelect            = 11;
  2860.     kTuneGetStatusSelect        = 12;
  2861.     kTuneStopSelect                = 13;
  2862.     kTuneResumeSelect            = 14;
  2863.     kTuneFlushSelect            = 15;
  2864.     kTuneSetVolumeSelect        = 16;
  2865.     kTuneGetVolumeSelect        = 17;
  2866.     kTunePrerollSelect            = 18;
  2867.     kTuneUnrollSelect            = 19;
  2868.     kTuneLastSelector            = 20;
  2869.  
  2870. TYPE
  2871.     TuneCallBackProcPtr = ProcPtr;  { PROCEDURE TuneCallBack((CONST)VAR status: TuneStatus; refCon: LONGINT); }
  2872.     TunePlayCallBackProcPtr = ProcPtr;  { PROCEDURE TunePlayCallBack(VAR event: LONGINT; seed: LONGINT; refCon: LONGINT); }
  2873.     TuneCallBackUPP = UniversalProcPtr;
  2874.     TunePlayCallBackUPP = UniversalProcPtr;
  2875.  
  2876.     TunePlayer = ComponentInstance;
  2877.  
  2878.  
  2879. CONST
  2880.     kMaxTunePlayerParts            = 32;
  2881.     kTunePlayerType                = 'tune';
  2882.  
  2883. {--------------------------
  2884.     Prototypes
  2885. --------------------------}
  2886.  
  2887. FUNCTION TuneSetHeader(tp: TunePlayer; VAR header: LONGINT): ComponentResult;
  2888.     {$IFC NOT GENERATINGCFM}
  2889.     INLINE $2F3C, $4, $4, $7000, $A82A;
  2890.     {$ENDC}
  2891. FUNCTION TuneGetTimeBase(tp: TunePlayer; VAR tb: TimeBase): ComponentResult;
  2892.     {$IFC NOT GENERATINGCFM}
  2893.     INLINE $2F3C, $4, $5, $7000, $A82A;
  2894.     {$ENDC}
  2895. FUNCTION TuneSetTimeScale(tp: TunePlayer; scale: TimeScale): ComponentResult;
  2896.     {$IFC NOT GENERATINGCFM}
  2897.     INLINE $2F3C, $4, $6, $7000, $A82A;
  2898.     {$ENDC}
  2899. FUNCTION TuneGetTimeScale(tp: TunePlayer; VAR scale: TimeScale): ComponentResult;
  2900.     {$IFC NOT GENERATINGCFM}
  2901.     INLINE $2F3C, $4, $7, $7000, $A82A;
  2902.     {$ENDC}
  2903. FUNCTION TuneGetIndexedNoteChannel(tp: TunePlayer; i: LONGINT; VAR nc: NoteChannel): ComponentResult;
  2904.     {$IFC NOT GENERATINGCFM}
  2905.     INLINE $2F3C, $8, $8, $7000, $A82A;
  2906.     {$ENDC}
  2907. { Values for when to start. }
  2908.  
  2909. CONST
  2910.     kTuneStartNow                = 1;                            { start after buffer is implied }
  2911.     kTuneDontClipNotes            = 2;                            { allow notes to finish their durations outside sample }
  2912.     kTuneExcludeEdgeNotes        = 4;                            { dont play notes that start at end of tune }
  2913.     kTuneStartNewMaster            = 16384;
  2914.  
  2915.  
  2916. FUNCTION TuneQueue(tp: TunePlayer; VAR tune: LONGINT; tuneRate: Fixed; tuneStartPosition: LONGINT; tuneStopPosition: LONGINT; queueFlags: LONGINT; callBackProc: TuneCallBackUPP; refCon: LONGINT): ComponentResult;
  2917.     {$IFC NOT GENERATINGCFM}
  2918.     INLINE $2F3C, $1C, $A, $7000, $A82A;
  2919.     {$ENDC}
  2920. FUNCTION TuneInstant(tp: TunePlayer; VAR tune: LONGINT; tunePosition: LONGINT): ComponentResult;
  2921.     {$IFC NOT GENERATINGCFM}
  2922.     INLINE $2F3C, $8, $B, $7000, $A82A;
  2923.     {$ENDC}
  2924. FUNCTION TuneGetStatus(tp: TunePlayer; VAR status: TuneStatus): ComponentResult;
  2925.     {$IFC NOT GENERATINGCFM}
  2926.     INLINE $2F3C, $4, $C, $7000, $A82A;
  2927.     {$ENDC}
  2928. { Values for when to start. }
  2929.  
  2930. CONST
  2931.     kStopSustain                = 1;                            { Leaves notes playing, not silent }
  2932.     kStopFadeout                = 2;                            { Does a synchronous fade-out }
  2933.  
  2934.  
  2935. FUNCTION TuneStop(tp: TunePlayer; stopFlags: LONGINT): ComponentResult;
  2936.     {$IFC NOT GENERATINGCFM}
  2937.     INLINE $2F3C, $4, $D, $7000, $A82A;
  2938.     {$ENDC}
  2939. FUNCTION TuneResume(tp: TunePlayer): ComponentResult;
  2940.     {$IFC NOT GENERATINGCFM}
  2941.     INLINE $2F3C, 0, $E, $7000, $A82A;
  2942.     {$ENDC}
  2943. FUNCTION TuneFlush(tp: TunePlayer): ComponentResult;
  2944.     {$IFC NOT GENERATINGCFM}
  2945.     INLINE $2F3C, 0, $F, $7000, $A82A;
  2946.     {$ENDC}
  2947. FUNCTION TuneSetVolume(tp: TunePlayer; volume: Fixed): ComponentResult;
  2948.     {$IFC NOT GENERATINGCFM}
  2949.     INLINE $2F3C, $4, $10, $7000, $A82A;
  2950.     {$ENDC}
  2951. FUNCTION TuneGetVolume(tp: TunePlayer): ComponentResult;
  2952.     {$IFC NOT GENERATINGCFM}
  2953.     INLINE $2F3C, 0, $11, $7000, $A82A;
  2954.     {$ENDC}
  2955. FUNCTION TunePreroll(tp: TunePlayer): ComponentResult;
  2956.     {$IFC NOT GENERATINGCFM}
  2957.     INLINE $2F3C, 0, $12, $7000, $A82A;
  2958.     {$ENDC}
  2959. FUNCTION TuneUnroll(tp: TunePlayer): ComponentResult;
  2960.     {$IFC NOT GENERATINGCFM}
  2961.     INLINE $2F3C, 0, $13, $7000, $A82A;
  2962.     {$ENDC}
  2963.     
  2964. TYPE
  2965.     MusicOpWord = LONGINT;
  2966.     MusicOpWordPtr = ^LONGINT;
  2967.  
  2968. {     QuickTime Music Track Event Formats:
  2969.  
  2970.     At this time, QuickTime music tracks support 5 different event types -- REST events,
  2971.     short NOTE events, short CONTROL events, short GENERAL events, Long NOTE events, 
  2972.     long CONTROL events, and variable GENERAL events.
  2973.  
  2974.         • REST Event (4 bytes/event):
  2975.     
  2976.             (0 0 0) (5-bit UNUSED) (24-bit Rest Duration)
  2977.         
  2978.         • Short NOTE Events (4 bytes/event):
  2979.     
  2980.             (0 0 1) (5-bit Instrument) (6-bit Pitch) (7-bit Volume) (11-bit Duration)
  2981.         
  2982.             where:    Pitch is offset by 32 (Actual pitch = pitch field + 32)
  2983.  
  2984.         • Short CONTROL Events (4 bytes/event):
  2985.     
  2986.             (0 1 0) (5-bit Instrument) (8-bit Controller) (1-bit UNUSED) (1-bit Sign) (7-bit MSB) (7-bit LSB)
  2987.                                                                          ( or 15-bit Signed Value)
  2988.         • Short GENERAL Event (4 bytes/event):
  2989.     
  2990.             (0 1 1) (1-bit UNUSED) (12-bit Sub-Type) (16-bit Value)
  2991.     
  2992.         • Long NOTE Events (8 bytes/event):
  2993.     
  2994.             (1 0 0 1) (12-bit Instrument) (1-bit UNUSED) (7-bit Pitch) (1-bit UNUSED) (7-bit Volume)
  2995.             (1 0) (8-bit UNUSED) (22-bit Duration)
  2996.         
  2997.         • Long CONTROL Event (8 bytes/event):
  2998.         
  2999.             (1 0 1 0) (12-bit Instrument) (16-bit Value MSB) 
  3000.             (1 0) (14-bit Controller) (16-bit Value LSB)
  3001.     
  3002.         • Long KNOB Event (8 bytes/event):
  3003.     
  3004.             (1 0 1 1) (12-bit Sub-Type) (16-bit Value MSB)
  3005.             (1 0) (14-bit KNOB) (16-bit Value LSB)
  3006.     
  3007.         • Variable GENERAL Length Events (N bytes/event):
  3008.     
  3009.             (1 1 1 1) (12-bit Sub-Type) (16-bit Length)
  3010.                 :
  3011.             (32-bit Data values)
  3012.                 :
  3013.             (1 1) (14-bit UNUSED) (16-bit Length)
  3014.     
  3015.             where:    Length field is the number of LONG words in the record.
  3016.                     Lengths include the first and last long words (Minimum length = 2)
  3017.                 
  3018.     The following event type values have not been used yet and are reserved for 
  3019.     future expansion:
  3020.         
  3021.         • (1 0 0 0)        (8 bytes/event)
  3022.         • (1 1 0 0)        (N bytes/event)
  3023.         • (1 1 0 1)        (N bytes/event)
  3024.         • (1 1 1 0)        (N bytes/event)
  3025.         
  3026.     For all events, the following generalizations apply:
  3027.     
  3028.         -    All duration values are specified in Millisecond units.
  3029.         -     Pitch values are intended to map directly to the MIDI key numbers.
  3030.         -    Controllers from 0 to 127 correspond to the standard MIDI controllers.
  3031.             Controllers greater than 127 correspond to other controls (i.e., Pitch Bend, 
  3032.             Key Pressure, and Channel Pressure).    
  3033. }
  3034. { Defines for the implemented music event data fields}
  3035.  
  3036. CONST
  3037.     kRestEventType                = $0;                            { lower 3-bits }
  3038.     kNoteEventType                = $1;                            { lower 3-bits }
  3039.     kControlEventType            = $2;                            { lower 3-bits }
  3040.     kMarkerEventType            = $3;                            { lower 3-bits }
  3041.     kUndefined1EventType        = $8;                            { 4-bits }
  3042.     kXNoteEventType                = $9;                            { 4-bits }
  3043.     kXControlEventType            = $A;                            { 4-bits }
  3044.     kKnobEventType                = $B;                            { 4-bits }
  3045.     kUndefined2EventType        = $C;                            { 4-bits }
  3046.     kUndefined3EventType        = $D;                            { 4-bits }
  3047.     kUndefined4EventType        = $E;                            { 4-bits }
  3048.     kGeneralEventType            = $F;                            { 4-bits }
  3049.     kXEventLengthBits            = $2;                            { 2 bits: indicates 8-byte event record }
  3050.     kGeneralEventLengthBits        = $3;                            { 2 bits: indicates variable length event record }
  3051.     kEventLen                    = 1;                            { length of events in long words }
  3052.     kXEventLen                    = 2;
  3053.     kRestEventLen                = kEventLen;                    { length of events in long words }
  3054.     kNoteEventLen                = kEventLen;
  3055.     kControlEventLen            = kEventLen;
  3056.     kMarkerEventLen                = kEventLen;
  3057.     kXNoteEventLen                = kXEventLen;
  3058.     kXControlEventLen            = kXEventLen;
  3059.     kGeneralEventLen            = kXEventLen;                    { 2 or more, however }
  3060. { Universal Event Defines}
  3061.     kEventLengthFieldPos        = 30;                            { by looking at these two bits of the 1st or last word              }
  3062.     kEventLengthFieldWidth        = 2;                            { of an event you can determine the event length                      }
  3063. { length field: 0 & 1 => 1 long; 2 => 2 longs; 3 => variable length }
  3064.     kEventTypeFieldPos            = 29;                            { event type field for short events }
  3065.     kEventTypeFieldWidth        = 3;                            { short type is 3 bits }
  3066.     kXEventTypeFieldPos            = 28;                            { event type field for extended events }
  3067.     kXEventTypeFieldWidth        = 4;                            { extended type is 4 bits }
  3068.     kEventInstrumentFieldPos    = 24;
  3069.     kEventInstrumentFieldWidth    = 5;
  3070.     kXEventInstrumentFieldPos    = 16;                            { in the 1st long word }
  3071.     kXEventInstrumentFieldWidth    = 12;
  3072. { Rest Events}
  3073.     kRestEventDurationFieldPos    = 0;
  3074.     kRestEventDurationFieldWidth = 24;
  3075.     kRestEventDurationMax        = 0+((1 * (2**(kRestEventDurationFieldWidth))) - 1);
  3076. { Note Events}
  3077.     kNoteEventPitchFieldPos        = 18;
  3078.     kNoteEventPitchFieldWidth    = 6;
  3079.     kNoteEventPitchOffset        = 32;                            { add to value in pitch field to get actual pitch }
  3080.     kNoteEventVolumeFieldPos    = 11;
  3081.     kNoteEventVolumeFieldWidth    = 7;
  3082.     kNoteEventVolumeOffset        = 0;                            { add to value in volume field to get actual volume }
  3083.     kNoteEventDurationFieldPos    = 0;
  3084.     kNoteEventDurationFieldWidth = 11;
  3085.     kNoteEventDurationMax        = 0+((1 * (2**(kNoteEventDurationFieldWidth))) - 1);
  3086.     kXNoteEventPitchFieldPos    = 0;                            { in the 1st long word }
  3087.     kXNoteEventPitchFieldWidth    = 16;
  3088.     kXNoteEventDurationFieldPos    = 0;                            { in the 2nd long word }
  3089.     kXNoteEventDurationFieldWidth = 22;
  3090.     kXNoteEventDurationMax        = 0+((1 * (2**(kXNoteEventDurationFieldWidth))) - 1);
  3091.     kXNoteEventVolumeFieldPos    = 22;                            { in the 2nd long word }
  3092.     kXNoteEventVolumeFieldWidth    = 7;
  3093. { Control Events}
  3094.     kControlEventControllerFieldPos = 16;
  3095.     kControlEventControllerFieldWidth = 8;
  3096.     kControlEventValueFieldPos    = 0;
  3097.     kControlEventValueFieldWidth = 16;
  3098.     kXControlEventControllerFieldPos = 0;                        { in the 2nd long word }
  3099.     kXControlEventControllerFieldWidth = 16;
  3100.     kXControlEventValueFieldPos    = 0;                            { in the 1st long word }
  3101.     kXControlEventValueFieldWidth = 16;
  3102. { Knob Events}
  3103.     kKnobEventValueHighFieldPos    = 0;                            { 1st long word }
  3104.     kKnobEventValueHighFieldWidth = 16;
  3105.     kKnobEventKnobFieldPos        = 16;                            { 2nd long word }
  3106.     kKnobEventKnobFieldWidth    = 14;
  3107.     kKnobEventValueLowFieldPos    = 0;                            { 2nd long word }
  3108.     kKnobEventValueLowFieldWidth = 16;
  3109. { Marker Events}
  3110.     kMarkerEventSubtypeFieldPos    = 16;
  3111.     kMarkerEventSubtypeFieldWidth = 8;
  3112.     kMarkerEventValueFieldPos    = 0;
  3113.     kMarkerEventValueFieldWidth    = 16;
  3114. { General Events}
  3115.     kGeneralEventSubtypeFieldPos = 16;                            { in the last long word }
  3116.     kGeneralEventSubtypeFieldWidth = 14;
  3117.     kGeneralEventLengthFieldPos    = 0;                            { in the 1st & last long words }
  3118.     kGeneralEventLengthFieldWidth = 16;
  3119.  
  3120.     kGeneralEventNoteRequest    = 1;                            { Encapsulates NoteRequest data structure }
  3121.     kGeneralEventInstrument        = 2;                            { Encapsulates poly, typical poly, followed by InstrumentData record }
  3122.     kGeneralEventFlatInstrument    = 3;                            { Encapsulates poly, typical poly, followed by FlatInstrument record }
  3123.     kGeneralEventPartName        = 4;                            { Brackets 2 longs follwed by a pascal string (padded to long alignment) }
  3124.     kGeneralEventPartKey        = 5;                            { Brackets 2 longs }
  3125.  
  3126.     TCSourceRefNameType            = 'name';
  3127.  
  3128.     tcDropFrame                    = 1 * (2**(0));
  3129.     tc24HourMax                    = 1 * (2**(1));
  3130.     tcNegTimesOK                = 1 * (2**(2));
  3131.     tcCounter                    = 1 * (2**(3));
  3132.  
  3133.  
  3134. TYPE
  3135.     TimeCodeDef = RECORD
  3136.         flags:                    LONGINT;                                { drop-frame, etc.}
  3137.         fTimeScale:                TimeScale;                                { time scale of frameDuration (eg. 2997)}
  3138.         frameDuration:            TimeValue;                                { duration of each frame (eg. 100)}
  3139.         numFrames:                SInt8;                                    { number of frames per second for timecode (eg. 30)}
  3140.         { number of frames per tick for counter mode}
  3141.         padding:                SInt8;                                    { unused padding byte }
  3142.     END;
  3143.  
  3144. CONST
  3145.     tctNegFlag                    = $80;                            { negative bit is in minutes}
  3146.  
  3147.  
  3148. TYPE
  3149.     TimeCodeTime = RECORD
  3150.         hours:                    SInt8;
  3151.         minutes:                SInt8;
  3152.         seconds:                SInt8;
  3153.         frames:                    SInt8;
  3154.     END;
  3155.     TimeCodeCounter = RECORD
  3156.         counter:                LONGINT;
  3157.     END;
  3158.     TimeCodeRecord = RECORD
  3159.         CASE INTEGER OF
  3160.         0: (
  3161.             t:                            TimeCodeTime;
  3162.            );
  3163.         1: (
  3164.             c:                            TimeCodeCounter;
  3165.            );
  3166.     END;
  3167.     TimeCodeDescription = RECORD
  3168.         { standard sample description header}
  3169.         descSize:                LONGINT;
  3170.         dataFormat:                LONGINT;
  3171.         resvd1:                    LONGINT;
  3172.         resvd2:                    INTEGER;
  3173.         dataRefIndex:            INTEGER;
  3174.         { timecode specific stuff}
  3175.         flags:                    LONGINT;
  3176.         timeCodeDef:            TimeCodeDef;
  3177.         srcRef:                    ARRAY [0..0] OF LONGINT;
  3178.     END;
  3179.     TimeCodeDescriptionPtr = ^TimeCodeDescription;
  3180.  
  3181.     TimeCodeDescriptionHandle = ^TimeCodeDescriptionPtr;
  3182.  
  3183.  
  3184. CONST
  3185.     tcdfShowTimeCode            = 1 * (2**(0));
  3186.  
  3187.     kTCGetCurrentTimeCodeSelect    = 257;
  3188.     kTCGetTimeCodeAtTimeSelect    = 258;
  3189.     kTCTimeCodeToStringSelect    = 259;
  3190.     kTCTimeCodeToFrameNumberSelect = 260;
  3191.     kTCFrameNumberToTimeCodeSelect = 261;
  3192.     kTCGetSourceRefSelect        = 262;
  3193.     kTCSetSourceRefSelect        = 263;
  3194.     kTCSetTimeCodeFlagsSelect    = 264;
  3195.     kTCGetTimeCodeFlagsSelect    = 265;
  3196.     kTCSetDisplayOptionsSelect    = 266;
  3197.     kTCGetDisplayOptionsSelect    = 267;
  3198.  
  3199.  
  3200. TYPE
  3201.     TCTextOptions = RECORD
  3202.         txFont:                    INTEGER;
  3203.         txFace:                    INTEGER;
  3204.         txSize:                    INTEGER;
  3205.         foreColor:                RGBColor;
  3206.         backColor:                RGBColor;
  3207.     END;
  3208.     TCTextOptionsPtr = ^TCTextOptions;
  3209.  
  3210.  
  3211. FUNCTION TCGetCurrentTimeCode(mh: MediaHandler; VAR frameNum: LONGINT; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord; VAR srcRefH: UserData): HandlerError;
  3212.     {$IFC NOT GENERATINGCFM}
  3213.     INLINE $2F3C, $10, $101, $7000, $A82A;
  3214.     {$ENDC}
  3215. FUNCTION TCGetTimeCodeAtTime(mh: MediaHandler; mediaTime: TimeValue; VAR frameNum: LONGINT; VAR tcdef: TimeCodeDef; VAR tcdata: TimeCodeRecord; VAR srcRefH: UserData): HandlerError;
  3216.     {$IFC NOT GENERATINGCFM}
  3217.     INLINE $2F3C, $14, $102, $7000, $A82A;
  3218.     {$ENDC}
  3219. FUNCTION TCTimeCodeToFrameNumber(mh: MediaHandler; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord; VAR frameNumber: LONGINT): HandlerError;
  3220.     {$IFC NOT GENERATINGCFM}
  3221.     INLINE $2F3C, $C, $104, $7000, $A82A;
  3222.     {$ENDC}
  3223. FUNCTION TCFrameNumberToTimeCode(mh: MediaHandler; frameNumber: LONGINT; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord): HandlerError;
  3224.     {$IFC NOT GENERATINGCFM}
  3225.     INLINE $2F3C, $C, $105, $7000, $A82A;
  3226.     {$ENDC}
  3227. FUNCTION TCTimeCodeToString(mh: MediaHandler; VAR tcdef: TimeCodeDef; VAR tcrec: TimeCodeRecord; tcStr: StringPtr): HandlerError;
  3228.     {$IFC NOT GENERATINGCFM}
  3229.     INLINE $2F3C, $C, $103, $7000, $A82A;
  3230.     {$ENDC}
  3231. FUNCTION TCGetSourceRef(mh: MediaHandler; tcdH: TimeCodeDescriptionHandle; VAR srefH: UserData): HandlerError;
  3232.     {$IFC NOT GENERATINGCFM}
  3233.     INLINE $2F3C, $8, $106, $7000, $A82A;
  3234.     {$ENDC}
  3235. FUNCTION TCSetSourceRef(mh: MediaHandler; tcdH: TimeCodeDescriptionHandle; srefH: UserData): HandlerError;
  3236.     {$IFC NOT GENERATINGCFM}
  3237.     INLINE $2F3C, $8, $107, $7000, $A82A;
  3238.     {$ENDC}
  3239. FUNCTION TCSetTimeCodeFlags(mh: MediaHandler; flags: LONGINT; flagsMask: LONGINT): HandlerError;
  3240.     {$IFC NOT GENERATINGCFM}
  3241.     INLINE $2F3C, $8, $108, $7000, $A82A;
  3242.     {$ENDC}
  3243. FUNCTION TCGetTimeCodeFlags(mh: MediaHandler; VAR flags: LONGINT): HandlerError;
  3244.     {$IFC NOT GENERATINGCFM}
  3245.     INLINE $2F3C, $4, $109, $7000, $A82A;
  3246.     {$ENDC}
  3247. FUNCTION TCSetDisplayOptions(mh: MediaHandler; textOptions: TCTextOptionsPtr): HandlerError;
  3248.     {$IFC NOT GENERATINGCFM}
  3249.     INLINE $2F3C, $4, $10A, $7000, $A82A;
  3250.     {$ENDC}
  3251. FUNCTION TCGetDisplayOptions(mh: MediaHandler; textOptions: TCTextOptionsPtr): HandlerError;
  3252.     {$IFC NOT GENERATINGCFM}
  3253.     INLINE $2F3C, $4, $10B, $7000, $A82A;
  3254.     {$ENDC}
  3255. { UPP call backs }
  3256.  
  3257. CONST
  3258.     uppSGDataProcInfo = $003BFFE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param): 2 byte result; }
  3259.     uppSGModalFilterProcInfo = $00003FD0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 1 byte result; }
  3260.     uppSGGrabProcInfo = $00000EF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param): 4 byte result; }
  3261.     uppSGGrabCompleteProcInfo = $00003EF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3262.     uppSGDisplayProcInfo = $0000FEF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3263.     uppSGCompressProcInfo = $00000EF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param): 4 byte result; }
  3264.     uppSGCompressCompleteProcInfo = $0000FEF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3265.     uppSGAddFrameProcInfo = $0003FEF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3266.     uppSGTransferFrameProcInfo = $0000FEF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3267.     uppSGGrabCompressCompleteProcInfo = $0000FFF0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3268.     uppSGDisplayCompressProcInfo = $0003FFF0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3269.     uppVdigIntProcInfo = $000003C0; { PROCEDURE (4 byte param, 4 byte param); }
  3270.     uppSCModalFilterProcInfo = $00003FD0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 1 byte result; }
  3271.     uppSCModalHookProcInfo = $00003EE0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param): 2 byte result; }
  3272.     uppDataHCompletionProcInfo = $00000BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param); }
  3273.     uppMusicMIDISendProcInfo = $00000FF0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  3274.     uppMusicMIDIReadHookProcInfo = $000003F0; { FUNCTION (4 byte param, 4 byte param): 4 byte result; }
  3275.     uppTuneCallBackProcInfo = $000003C0; { PROCEDURE (4 byte param, 4 byte param); }
  3276.     uppTunePlayCallBackProcInfo = $00000FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param); }
  3277.  
  3278. FUNCTION NewSGDataProc(userRoutine: SGDataProcPtr): SGDataUPP;
  3279.     {$IFC NOT GENERATINGCFM }
  3280.     INLINE $2E9F;
  3281.     {$ENDC}
  3282.  
  3283. FUNCTION NewSGModalFilterProc(userRoutine: SGModalFilterProcPtr): SGModalFilterUPP;
  3284.     {$IFC NOT GENERATINGCFM }
  3285.     INLINE $2E9F;
  3286.     {$ENDC}
  3287.  
  3288. FUNCTION NewSGGrabProc(userRoutine: SGGrabProcPtr): SGGrabUPP;
  3289.     {$IFC NOT GENERATINGCFM }
  3290.     INLINE $2E9F;
  3291.     {$ENDC}
  3292.  
  3293. FUNCTION NewSGGrabCompleteProc(userRoutine: SGGrabCompleteProcPtr): SGGrabCompleteUPP;
  3294.     {$IFC NOT GENERATINGCFM }
  3295.     INLINE $2E9F;
  3296.     {$ENDC}
  3297.  
  3298. FUNCTION NewSGDisplayProc(userRoutine: SGDisplayProcPtr): SGDisplayUPP;
  3299.     {$IFC NOT GENERATINGCFM }
  3300.     INLINE $2E9F;
  3301.     {$ENDC}
  3302.  
  3303. FUNCTION NewSGCompressProc(userRoutine: SGCompressProcPtr): SGCompressUPP;
  3304.     {$IFC NOT GENERATINGCFM }
  3305.     INLINE $2E9F;
  3306.     {$ENDC}
  3307.  
  3308. FUNCTION NewSGCompressCompleteProc(userRoutine: SGCompressCompleteProcPtr): SGCompressCompleteUPP;
  3309.     {$IFC NOT GENERATINGCFM }
  3310.     INLINE $2E9F;
  3311.     {$ENDC}
  3312.  
  3313. FUNCTION NewSGAddFrameProc(userRoutine: SGAddFrameProcPtr): SGAddFrameUPP;
  3314.     {$IFC NOT GENERATINGCFM }
  3315.     INLINE $2E9F;
  3316.     {$ENDC}
  3317.  
  3318. FUNCTION NewSGTransferFrameProc(userRoutine: SGTransferFrameProcPtr): SGTransferFrameUPP;
  3319.     {$IFC NOT GENERATINGCFM }
  3320.     INLINE $2E9F;
  3321.     {$ENDC}
  3322.  
  3323. FUNCTION NewSGGrabCompressCompleteProc(userRoutine: SGGrabCompressCompleteProcPtr): SGGrabCompressCompleteUPP;
  3324.     {$IFC NOT GENERATINGCFM }
  3325.     INLINE $2E9F;
  3326.     {$ENDC}
  3327.  
  3328. FUNCTION NewSGDisplayCompressProc(userRoutine: SGDisplayCompressProcPtr): SGDisplayCompressUPP;
  3329.     {$IFC NOT GENERATINGCFM }
  3330.     INLINE $2E9F;
  3331.     {$ENDC}
  3332.  
  3333. FUNCTION NewVdigIntProc(userRoutine: VdigIntProcPtr): VdigIntUPP;
  3334.     {$IFC NOT GENERATINGCFM }
  3335.     INLINE $2E9F;
  3336.     {$ENDC}
  3337.  
  3338. FUNCTION NewSCModalFilterProc(userRoutine: SCModalFilterProcPtr): SCModalFilterUPP;
  3339.     {$IFC NOT GENERATINGCFM }
  3340.     INLINE $2E9F;
  3341.     {$ENDC}
  3342.  
  3343. FUNCTION NewSCModalHookProc(userRoutine: SCModalHookProcPtr): SCModalHookUPP;
  3344.     {$IFC NOT GENERATINGCFM }
  3345.     INLINE $2E9F;
  3346.     {$ENDC}
  3347.  
  3348. FUNCTION NewDataHCompletionProc(userRoutine: DataHCompletionProcPtr): DataHCompletionUPP;
  3349.     {$IFC NOT GENERATINGCFM }
  3350.     INLINE $2E9F;
  3351.     {$ENDC}
  3352.  
  3353. FUNCTION NewMusicMIDISendProc(userRoutine: MusicMIDISendProcPtr): MusicMIDISendUPP;
  3354.     {$IFC NOT GENERATINGCFM }
  3355.     INLINE $2E9F;
  3356.     {$ENDC}
  3357.  
  3358. FUNCTION NewMusicMIDIReadHookProc(userRoutine: MusicMIDIReadHookProcPtr): MusicMIDIReadHookUPP;
  3359.     {$IFC NOT GENERATINGCFM }
  3360.     INLINE $2E9F;
  3361.     {$ENDC}
  3362.  
  3363. FUNCTION NewTuneCallBackProc(userRoutine: TuneCallBackProcPtr): TuneCallBackUPP;
  3364.     {$IFC NOT GENERATINGCFM }
  3365.     INLINE $2E9F;
  3366.     {$ENDC}
  3367.  
  3368. FUNCTION NewTunePlayCallBackProc(userRoutine: TunePlayCallBackProcPtr): TunePlayCallBackUPP;
  3369.     {$IFC NOT GENERATINGCFM }
  3370.     INLINE $2E9F;
  3371.     {$ENDC}
  3372.  
  3373. FUNCTION CallSGDataProc(c: SGChannel; p: Ptr; len: LONGINT; VAR offset: LONGINT; chRefCon: LONGINT; time: TimeValue; writeType: INTEGER; refCon: LONGINT; userRoutine: SGDataUPP): OSErr;
  3374.     {$IFC NOT GENERATINGCFM}
  3375.     INLINE $205F, $4E90;
  3376.     {$ENDC}
  3377.  
  3378. FUNCTION CallSGModalFilterProc(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; refCon: LONGINT; userRoutine: SGModalFilterUPP): BOOLEAN;
  3379.     {$IFC NOT GENERATINGCFM}
  3380.     INLINE $205F, $4E90;
  3381.     {$ENDC}
  3382.  
  3383. FUNCTION CallSGGrabProc(c: SGChannel; bufferNum: INTEGER; refCon: LONGINT; userRoutine: SGGrabUPP): ComponentResult;
  3384.     {$IFC NOT GENERATINGCFM}
  3385.     INLINE $205F, $4E90;
  3386.     {$ENDC}
  3387.  
  3388. FUNCTION CallSGGrabCompleteProc(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; refCon: LONGINT; userRoutine: SGGrabCompleteUPP): ComponentResult;
  3389.     {$IFC NOT GENERATINGCFM}
  3390.     INLINE $205F, $4E90;
  3391.     {$ENDC}
  3392.  
  3393. FUNCTION CallSGDisplayProc(c: SGChannel; bufferNum: INTEGER; VAR mp: MatrixRecord; clipRgn: RgnHandle; refCon: LONGINT; userRoutine: SGDisplayUPP): ComponentResult;
  3394.     {$IFC NOT GENERATINGCFM}
  3395.     INLINE $205F, $4E90;
  3396.     {$ENDC}
  3397.  
  3398. FUNCTION CallSGCompressProc(c: SGChannel; bufferNum: INTEGER; refCon: LONGINT; userRoutine: SGCompressUPP): ComponentResult;
  3399.     {$IFC NOT GENERATINGCFM}
  3400.     INLINE $205F, $4E90;
  3401.     {$ENDC}
  3402.  
  3403. FUNCTION CallSGCompressCompleteProc(c: SGChannel; bufferNum: INTEGER; VAR done: BOOLEAN; VAR ci: SGCompressInfo; refCon: LONGINT; userRoutine: SGCompressCompleteUPP): ComponentResult;
  3404.     {$IFC NOT GENERATINGCFM}
  3405.     INLINE $205F, $4E90;
  3406.     {$ENDC}
  3407.  
  3408. FUNCTION CallSGAddFrameProc(c: SGChannel; bufferNum: INTEGER; atTime: TimeValue; scale: TimeScale; {CONST}VAR ci: SGCompressInfo; refCon: LONGINT; userRoutine: SGAddFrameUPP): ComponentResult;
  3409.     {$IFC NOT GENERATINGCFM}
  3410.     INLINE $205F, $4E90;
  3411.     {$ENDC}
  3412.  
  3413. FUNCTION CallSGTransferFrameProc(c: SGChannel; bufferNum: INTEGER; VAR mp: MatrixRecord; clipRgn: RgnHandle; refCon: LONGINT; userRoutine: SGTransferFrameUPP): ComponentResult;
  3414.     {$IFC NOT GENERATINGCFM}
  3415.     INLINE $205F, $4E90;
  3416.     {$ENDC}
  3417.  
  3418. FUNCTION CallSGGrabCompressCompleteProc(c: SGChannel; VAR done: BOOLEAN; VAR ci: SGCompressInfo; VAR t: TimeRecord; refCon: LONGINT; userRoutine: SGGrabCompressCompleteUPP): ComponentResult;
  3419.     {$IFC NOT GENERATINGCFM}
  3420.     INLINE $205F, $4E90;
  3421.     {$ENDC}
  3422.  
  3423. FUNCTION CallSGDisplayCompressProc(c: SGChannel; dataPtr: Ptr; desc: ImageDescriptionHandle; VAR mp: MatrixRecord; clipRgn: RgnHandle; refCon: LONGINT; userRoutine: SGDisplayCompressUPP): ComponentResult;
  3424.     {$IFC NOT GENERATINGCFM}
  3425.     INLINE $205F, $4E90;
  3426.     {$ENDC}
  3427.  
  3428. PROCEDURE CallVdigIntProc(flags: LONGINT; refcon: LONGINT; userRoutine: VdigIntUPP);
  3429.     {$IFC NOT GENERATINGCFM}
  3430.     INLINE $205F, $4E90;
  3431.     {$ENDC}
  3432.  
  3433. FUNCTION CallSCModalFilterProc(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; refcon: LONGINT; userRoutine: SCModalFilterUPP): BOOLEAN;
  3434.     {$IFC NOT GENERATINGCFM}
  3435.     INLINE $205F, $4E90;
  3436.     {$ENDC}
  3437.  
  3438. FUNCTION CallSCModalHookProc(theDialog: DialogPtr; itemHit: INTEGER; params: UNIV Ptr; refcon: LONGINT; userRoutine: SCModalHookUPP): INTEGER;
  3439.     {$IFC NOT GENERATINGCFM}
  3440.     INLINE $205F, $4E90;
  3441.     {$ENDC}
  3442.  
  3443. PROCEDURE CallDataHCompletionProc(request: Ptr; refcon: LONGINT; err: OSErr; userRoutine: DataHCompletionUPP);
  3444.     {$IFC NOT GENERATINGCFM}
  3445.     INLINE $205F, $4E90;
  3446.     {$ENDC}
  3447.  
  3448. FUNCTION CallMusicMIDISendProc(self: MusicComponent; refCon: LONGINT; VAR mmp: MusicMIDIPacket; userRoutine: MusicMIDISendUPP): ComponentResult;
  3449.     {$IFC NOT GENERATINGCFM}
  3450.     INLINE $205F, $4E90;
  3451.     {$ENDC}
  3452.  
  3453. FUNCTION CallMusicMIDIReadHookProc(VAR mp: MusicMIDIPacket; myRefCon: LONGINT; userRoutine: MusicMIDIReadHookUPP): ComponentResult;
  3454.     {$IFC NOT GENERATINGCFM}
  3455.     INLINE $205F, $4E90;
  3456.     {$ENDC}
  3457.  
  3458. PROCEDURE CallTuneCallBackProc({CONST}VAR status: TuneStatus; refCon: LONGINT; userRoutine: TuneCallBackUPP);
  3459.     {$IFC NOT GENERATINGCFM}
  3460.     INLINE $205F, $4E90;
  3461.     {$ENDC}
  3462.  
  3463. PROCEDURE CallTunePlayCallBackProc(VAR event: LONGINT; seed: LONGINT; refCon: LONGINT; userRoutine: TunePlayCallBackUPP);
  3464.     {$IFC NOT GENERATINGCFM}
  3465.     INLINE $205F, $4E90;
  3466.     {$ENDC}
  3467.  
  3468. {$ALIGN RESET}
  3469. {$POP}
  3470.  
  3471. {$SETC UsingIncludes := QuickTimeComponentsIncludes}
  3472.  
  3473. {$ENDC} {__QUICKTIMECOMPONENTS__}
  3474.  
  3475. {$IFC NOT UsingIncludes}
  3476.  END.
  3477. {$ENDC}
  3478.